Interface KafkaProducer<K,V>
-
- Type Parameters:
K
- the type of keyV
- the type of value
- All Known Implementing Classes:
ReactiveKafkaProducer
public interface KafkaProducer<K,V>
Kafka Producer API.Unlike
KafkaProducer
, this API is guaranteed to be asynchronous. Note that even though theorg.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.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method 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()
-
-
-
Method Detail
-
runOnSendingThread
@CheckReturnValue <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.The action is a function taking as parameter the
Producer
and that returns a result (potentiallynull
). The producedUni
emits the returned result when the action completes. If the action throws an exception, the producedUni
emits the exception as failure.If the action does not return a result, use
runOnSendingThread(java.util.function.Consumer)
.- Type Parameters:
R
- the type of result, can beVoid
- Parameters:
action
- the action to execute, must not benull
- Returns:
- the Uni emitting the result or the failure when the action completes.
-
runOnSendingThread
@CheckReturnValue io.smallrye.mutiny.Uni<Void> runOnSendingThread(Consumer<org.apache.kafka.clients.producer.Producer<K,V>> action)
Runs an action on the sending thread.The action is a consumer receiving the
Producer
. The producedUni
emitsnull
when the action completes. If the action throws an exception, the producedUni
emits the exception as failure.- Parameters:
action
- the action, must not benull
- Returns:
- the Uni emitting
null
or the failure when the action completes.
-
send
@CheckReturnValue 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. The returnedUni
completes withRecordMetadata
when the send has been acknowledged, or with an exception in case of an error.
-
flush
@CheckReturnValue io.smallrye.mutiny.Uni<Void> flush()
Sends all buffered records immediately. The returnedUni
completes when all requests belonging to the buffered records complete. In other words, when the returnedUni
completes, all previoussend(ProducerRecord)
operations are known to be complete as well. No guarantee is made about the completion of records sent afterflush
was called.
-
partitionsFor
@CheckReturnValue io.smallrye.mutiny.Uni<List<org.apache.kafka.common.PartitionInfo>> partitionsFor(String topic)
Returns a list of partition metadata for given topic.
-
-