K - the type of keyV - the type of valuepublic interface KafkaProducer<K,V>
Unlike KafkaProducer, this API is guaranteed to be asynchronous.
Note that even though the org.apache.kafka.clients.producer.KafkaProducer is documented to be asynchronous,
it actually may block in some cases; see KAFKA-3539
for more info.
The way asynchrony is guaranteed here is an implementation detail. Currently, the sending actions are executed
on a special sending thread, but when KAFKA-3539 is fixed, the implementation may become just a simple
wrapper providing a Uni API.
| Modifier and Type | Method and Description |
|---|---|
io.smallrye.mutiny.Uni<Void> |
flush()
Sends all buffered records immediately.
|
io.smallrye.mutiny.Uni<List<org.apache.kafka.common.PartitionInfo>> |
partitionsFor(String topic)
Returns a list of partition metadata for given topic.
|
io.smallrye.mutiny.Uni<Void> |
runOnSendingThread(Consumer<org.apache.kafka.clients.producer.Producer<K,V>> action)
Runs an action on the sending thread.
|
<R> io.smallrye.mutiny.Uni<R> |
runOnSendingThread(Function<org.apache.kafka.clients.producer.Producer<K,V>,R> action)
Runs an action on the sending thread.
|
io.smallrye.mutiny.Uni<org.apache.kafka.clients.producer.RecordMetadata> |
send(org.apache.kafka.clients.producer.ProducerRecord<K,V> record)
Send a record to a topic.
|
org.apache.kafka.clients.producer.Producer<K,V> |
unwrap() |
<R> io.smallrye.mutiny.Uni<R> runOnSendingThread(Function<org.apache.kafka.clients.producer.Producer<K,V>,R> action)
The action is a function taking as parameter the Producer and that returns a result (potentially null).
The produced Uni emits the returned result when the action completes. If the action throws an exception,
the produced Uni emits the exception as failure.
If the action does not return a result, use runOnSendingThread(java.util.function.Consumer).
R - the type of result, can be Voidaction - the action to execute, must not be nullio.smallrye.mutiny.Uni<Void> runOnSendingThread(Consumer<org.apache.kafka.clients.producer.Producer<K,V>> action)
The action is a consumer receiving the Producer.
The produced Uni emits null when the action completes. If the action throws an exception,
the produced Uni emits the exception as failure.
action - the action, must not be nullnull or the failure when the action completes.io.smallrye.mutiny.Uni<org.apache.kafka.clients.producer.RecordMetadata> send(org.apache.kafka.clients.producer.ProducerRecord<K,V> record)
Uni completes with RecordMetadata when the send
has been acknowledged, or with an exception in case of an error.io.smallrye.mutiny.Uni<Void> flush()
Uni completes when all requests belonging
to the buffered records complete. In other words, when the returned Uni completes, all
previous send(ProducerRecord) operations are known to be complete as well.
No guarantee is made about the completion of records sent after flush was called.io.smallrye.mutiny.Uni<List<org.apache.kafka.common.PartitionInfo>> partitionsFor(String topic)
Copyright © 2018–2021 SmallRye. All rights reserved.