Struct fluvio::consumer::PartitionConsumer

source ·
pub struct PartitionConsumer<P = SpuSocketPool> { /* private fields */ }
Expand description

An interface for consuming events from a particular partition

Implementations§

source§

impl<P> PartitionConsumer<P>
where P: SpuDirectory,

source

pub fn new( topic: String, partition: PartitionId, pool: Arc<P>, metrics: Arc<ClientMetrics>, ) -> Self

source

pub fn topic(&self) -> &str

Returns the name of the Topic that this consumer reads from

source

pub fn partition(&self) -> PartitionId

Returns the ID of the partition that this consumer reads from

source

pub fn metrics(&self) -> Arc<ClientMetrics>

Return a shared instance of ClientMetrics

source

pub async fn stream( &self, offset: Offset, ) -> Result<impl Stream<Item = Result<Record, ErrorCode>>>

👎Deprecated since 0.21.8: use Fluvio::consumer_with_config() instead

Continuously streams events from a particular offset in the consumer’s partition

Streaming is one of the two ways to consume events in Fluvio. It is a continuous request for new records arriving in a partition, beginning at a particular offset. You specify the starting point of the stream using an Offset and periodically receive events, either individually or in batches.

Note this uses ConsumerRecord instead of batches

If you want more fine-grained control over how records are streamed, check out the stream_with_config method.

§Example
use futures::StreamExt;
let mut stream = consumer.stream(Offset::beginning()).await?;
while let Some(Ok(record)) = stream.next().await {
    let key_str = record.get_key().map(|key| key.as_utf8_lossy_string());
    let value_str = record.get_value().as_utf8_lossy_string();
    println!("Got event: key={:?}, value={value_str}", key_str);
}
source

pub async fn stream_with_config( &self, offset: Offset, config: ConsumerConfig, ) -> Result<impl Stream<Item = Result<Record, ErrorCode>>>

👎Deprecated since 0.21.8: use Fluvio::consumer_with_config() instead

Continuously streams events from a particular offset in the consumer’s partition

Most of the time, you shouldn’t need to use a custom ConsumerConfig. If you don’t know what these settings do, try checking out the simpler PartitionConsumer::stream method that uses the default streaming settings.

Streaming is one of the two ways to consume events in Fluvio. It is a continuous request for new records arriving in a partition, beginning at a particular offset. You specify the starting point of the stream using an Offset and a ConsumerConfig, and periodically receive events, either individually or in batches.

§Example
use futures::StreamExt;
// Use a custom max_bytes value in the config
let fetch_config = ConsumerConfig::builder()
    .max_bytes(1000)
    .build()?;
let mut stream = consumer.stream_with_config(Offset::beginning(), fetch_config).await?;
while let Some(Ok(record)) = stream.next().await {
    let key_str = record.get_key().map(|key| key.as_utf8_lossy_string());
    let value_str = record.get_value().as_utf8_lossy_string();
    println!("Got record: key={:?}, value={}", key_str, value_str);
}
source

pub async fn stream_batches_with_config( &self, offset: Offset, config: ConsumerConfig, ) -> Result<impl Stream<Item = Result<Batch, ErrorCode>>>

👎Deprecated since 0.21.8: use Fluvio::consumer_with_config() instead

Continuously streams batches of messages, starting an offset in the consumer’s partition

use futures::StreamExt;
// Use a custom max_bytes value in the config
let fetch_config = ConsumerConfig::builder()
    .max_bytes(1000)
    .build()?;
let mut stream = consumer.stream_batches_with_config(Offset::beginning(), fetch_config).await?;
while let Some(Ok(batch)) = stream.next().await {
    for record in batch.records() {
        let key_str = record.key().map(|key| key.as_utf8_lossy_string());
        let value_str = record.value().as_utf8_lossy_string();
        println!("Got record: key={:?}, value={}", key_str, value_str);
    }
}

Trait Implementations§

source§

impl<P> Clone for PartitionConsumer<P>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<P> Freeze for PartitionConsumer<P>

§

impl<P> RefUnwindSafe for PartitionConsumer<P>
where P: RefUnwindSafe,

§

impl<P> Send for PartitionConsumer<P>
where P: Sync + Send,

§

impl<P> Sync for PartitionConsumer<P>
where P: Sync + Send,

§

impl<P> Unpin for PartitionConsumer<P>

§

impl<P> UnwindSafe for PartitionConsumer<P>
where P: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> AsyncConnector for T
where T: Send + Sync,