Struct rdkafka::producer::future_producer::FutureProducer [−][src]
#[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]
impl<C: ClientContext + 'static> FutureProducer<C>
pub fn send<P: ?Sized, K: ?Sized>(
&self,
record: FutureRecord<P, K>,
block_ms: i64
) -> DeliveryFuture where
K: ToBytes,
P: ToBytes,
[src]
pub fn send<P: ?Sized, K: ?Sized>(
&self,
record: FutureRecord<P, K>,
block_ms: i64
) -> DeliveryFuture where
K: ToBytes,
P: ToBytes,
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]
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,
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]
pub fn poll<T: Into<Option<Duration>>>(&self, timeout: T)
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]
pub fn flush<T: Into<Option<Duration>>>(&self, timeout: T)
Flushes the producer. Should be called before termination.
pub fn in_flight_count(&self) -> i32
[src]
pub fn in_flight_count(&self) -> i32
Returns the number of messages waiting to be sent, or send but not acknowledged yet.
Trait Implementations
impl<C: ClientContext + 'static> Clone for FutureProducer<C>
[src]
impl<C: ClientContext + 'static> Clone for FutureProducer<C>
fn clone(&self) -> FutureProducer<C>
[src]
fn clone(&self) -> FutureProducer<C>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl FromClientConfig for FutureProducer
[src]
impl FromClientConfig for FutureProducer
fn from_config(config: &ClientConfig) -> KafkaResult<FutureProducer>
[src]
fn from_config(config: &ClientConfig) -> KafkaResult<FutureProducer>
Create a client from client configuration. The default client context will be used.
impl<C: ClientContext + 'static> FromClientConfigAndContext<C> for FutureProducer<C>
[src]
impl<C: ClientContext + 'static> FromClientConfigAndContext<C> for FutureProducer<C>
fn from_config_and_context(
config: &ClientConfig,
context: C
) -> KafkaResult<FutureProducer<C>>
[src]
fn from_config_and_context(
config: &ClientConfig,
context: C
) -> KafkaResult<FutureProducer<C>>
Create a client from client configuration and a client context.
Auto Trait Implementations
impl<C> Send for FutureProducer<C>
impl<C> Send for FutureProducer<C>
impl<C> Sync for FutureProducer<C>
impl<C> Sync for FutureProducer<C>