use std::collections::BTreeMap;
use crate::{
consumer::initial_position::InitialPosition,
message::proto::{MessageIdData, Schema},
};
#[derive(Clone, Default, Debug)]
pub struct ConsumerOptions {
pub priority_level: Option<i32>,
pub durable: Option<bool>,
pub start_message_id: Option<MessageIdData>,
pub metadata: BTreeMap<String, String>,
pub read_compacted: Option<bool>,
pub schema: Option<Schema>,
pub initial_position: InitialPosition,
}
impl ConsumerOptions {
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn with_priority_level(mut self, priority_level: i32) -> Self {
self.priority_level = Some(priority_level);
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn durable(mut self, durable: bool) -> Self {
self.durable = Some(durable);
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn starting_on_message(mut self, message_id_data: MessageIdData) -> Self {
self.start_message_id = Some(message_id_data);
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn with_metadata(mut self, metadata: BTreeMap<String, String>) -> Self {
self.metadata = metadata;
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn read_compacted(mut self, read_compacted: bool) -> Self {
self.read_compacted = Some(read_compacted);
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn with_schema(mut self, schema: Schema) -> Self {
self.schema = Some(schema);
self
}
#[cfg_attr(feature = "telemetry", tracing::instrument(skip_all))]
pub fn with_initial_position(mut self, initial_position: InitialPosition) -> Self {
self.initial_position = initial_position;
self
}
}