pub struct FutureProducer<C = DefaultClientContext, R = DefaultRuntime> where
    C: ClientContext + 'static, 
{ /* private fields */ }
Expand description

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, which 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 polling thread will be terminated when the FutureProducer goes out of scope.

Implementations

Sends a message to Kafka, returning the result of the send.

The queue_timeout parameter controls how long to retry for if the librdkafka producer queue is full. Set it to Timeout::Never to retry forever or Timeout::After(0) to never block. If the timeout is reached and the queue is still full, an RDKafkaErrorCode::QueueFull error will be reported in the OwnedDeliveryResult.

Keep in mind that queue_timeout only applies to the first phase of the send operation. Once the message is queued, the underlying librdkafka client has separate timeout parameters that apply, like delivery.timeout.ms.

See also the FutureProducer::send_result method, which will not retry the queue operation if the queue is full.

Like FutureProducer::send, but if enqueuing fails, an error will be returned immediately, alongside the FutureRecord provided.

Polls the internal producer.

This is not normally required since the FutureProducer has a thread dedicated to calling poll regularly.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Creates a client from a client configuration. The default client context will be used. Read more

Creates a client from a client configuration and a client context.

Returns the Client underlying this producer.

Flushes any pending messages. Read more

Returns the number of messages that are either waiting to be sent or are sent but are waiting to be acknowledged. Read more

Enable sending transactions with this producer. Read more

Begins a new transaction. Read more

Associates an offset commit operation with this transaction. Read more

Commits the current transaction. Read more

Aborts the current transaction. Read more

Returns a reference to the ProducerContext used to create this producer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

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

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

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.