[−][src]Module rdkafka::producer::base_producer
Low level Kafka producers.
For more information about the producers provided in rdkafka, refer to the module level documentation.
BaseProducer
The BaseProducer
is a low level Kafka producer designed to be as similar as possible to
the underlying C librdkafka producer, while maintaining a safe Rust interface.
Production of messages is fully asynchronous. The librdkafka producer will take care of buffering requests together according to configuration, and to send them efficiently. Once a message has been produced, or the retry count reached, a callback function called delivery callback will be called.
The BaseProducer
requires a ProducerContext
which will be used to specify the delivery callback
and the DeliveryOpaque
. The DeliveryOpaque
is a user-defined type that the user can pass to the
send
method of the producer, and that the producer will then forward to the delivery
callback of the corresponding message. The DeliveryOpaque
is useful in case the delivery
callback requires additional information about the message (such as message id for example).
Calling poll
To execute delivery callbacks the poll
method of the producer should be called regularly.
If poll
is not called, or not often enough, a RDKafkaError::QueueFull
error will be returned.
ThreadedProducer
The ThreadedProducer
is a wrapper around the BaseProducer
which spawns a thread
dedicated to calling poll
on the producer at regular intervals, so that the user doesn't
have to. The thread is started when the producer is created, and it will be terminated
once the producer goes out of scope.
A RDKafkaError::QueueFull
error can still be returned in case the polling thread is not
fast enough or Kafka is not able to receive data and acknowledge messages quickly enough.
If this error is returned, the producer should wait and try again.
Re-exports
pub use crate::message::DeliveryResult; |
Structs
BaseProducer | Low level Kafka producer. |
BaseRecord | Producer record for the base producer |
DefaultProducerContext | Default producer context that can be use when a custom context is not required. |
ThreadedProducer | A producer with a separate thread for event handling. |
Traits
ProducerContext | A |