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 Void
action
- the action to execute, must not be null
io.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 null
null
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.