[][src]Struct rdkafka::producer::future_producer::FutureProducer

#[must_use = "Producer polling thread will stop immediately if unused"]
pub struct FutureProducer<C: ClientContext + 'static = DefaultClientContext> { /* fields omitted */ }

A producer that returns a Future for every message being produced.

Since message production in rdkafka is asynchronous, the caller cannot immediately know if the delivery of the message was successful or not. The FutureProducer provides this information in a Future, that will be completed once the information becomes available. This producer has an internal polling thread and as such it doesn't need to be polled. It can be cheaply cloned to get a reference to the same underlying producer. The internal will be terminated once the the FutureProducer goes out of scope.

Methods

impl<C: ClientContext + 'static> FutureProducer<C>[src]

pub fn send<K: ?Sized, P: ?Sized>(
    &self,
    record: FutureRecord<K, P>,
    block_ms: i64
) -> DeliveryFuture where
    K: ToBytes,
    P: ToBytes
[src]

Sends the provided FutureRecord. Returns a DeliveryFuture that will eventually contain the result of the send. The block_ms parameter will control for how long the producer is allowed to block if the queue is full. Set it to -1 to block forever, or 0 to never block. If block_ms is reached and the queue is still full, a RDKafkaError::QueueFull will be reported in the DeliveryFuture.

pub fn send_result<'a, K: ?Sized, P: ?Sized>(
    &self,
    record: FutureRecord<'a, K, P>
) -> Result<DeliveryFuture, (KafkaError, FutureRecord<'a, K, P>)> where
    K: ToBytes,
    P: ToBytes
[src]

Same as FutureProducer::send, with the only difference that if enqueuing fails, an error will be returned immediately, alongside the FutureRecord provided.

pub fn poll<T: Into<Option<Duration>>>(&self, timeout: T)[src]

Polls the internal producer. This is not normally required since the ThreadedProducer had a thread dedicated to calling poll regularly.

pub fn flush<T: Into<Option<Duration>>>(&self, timeout: T)[src]

Flushes the producer. Should be called before termination.

pub fn in_flight_count(&self) -> i32[src]

Returns the number of messages waiting to be sent, or send but not acknowledged yet.

Trait Implementations

impl FromClientConfig for FutureProducer[src]

impl<C: ClientContext + 'static> FromClientConfigAndContext<C> for FutureProducer<C>[src]

impl<C: ClientContext + 'static> Clone for FutureProducer<C>[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<C> Send for FutureProducer<C>

impl<C> Sync for FutureProducer<C>

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]