Class KafkaTransactionsImpl<T>
- java.lang.Object
-
- io.smallrye.reactive.messaging.providers.extension.AbstractEmitter<T>
-
- io.smallrye.reactive.messaging.providers.extension.MutinyEmitterImpl<T>
-
- io.smallrye.reactive.messaging.kafka.transactions.KafkaTransactionsImpl<T>
-
- All Implemented Interfaces:
io.smallrye.reactive.messaging.EmitterType,KafkaTransactions<T>,io.smallrye.reactive.messaging.MessagePublisherProvider<T>,io.smallrye.reactive.messaging.MutinyEmitter<T>
public class KafkaTransactionsImpl<T> extends MutinyEmitterImpl<T> implements KafkaTransactions<T>
-
-
Field Summary
-
Fields inherited from class io.smallrye.reactive.messaging.providers.extension.AbstractEmitter
internal, name, NO_SUBSCRIBER_EXCEPTION, publisher, synchronousFailure
-
-
Constructor Summary
Constructors Constructor Description KafkaTransactionsImpl(io.smallrye.reactive.messaging.EmitterConfiguration config, long defaultBufferSize, KafkaClientService clientService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanisTransactionInProgress()<R> io.smallrye.mutiny.Uni<R>withTransaction(Function<TransactionalEmitter<T>,io.smallrye.mutiny.Uni<R>> work)Produce records in a Kafka transaction.<R> io.smallrye.mutiny.Uni<R>withTransaction(org.eclipse.microprofile.reactive.messaging.Message<?> message, Function<TransactionalEmitter<T>,io.smallrye.mutiny.Uni<R>> work)Produce records in a Kafka transaction, by processing the given message exactly-once.-
Methods inherited from class io.smallrye.reactive.messaging.providers.extension.MutinyEmitterImpl
send, send, sendAndAwait, sendAndForget
-
Methods inherited from class io.smallrye.reactive.messaging.providers.extension.AbstractEmitter
complete, emit, error, getPublisher, hasRequests, isCancelled, verify
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.smallrye.reactive.messaging.kafka.transactions.KafkaTransactions
withTransactionAndAck
-
-
-
-
Constructor Detail
-
KafkaTransactionsImpl
public KafkaTransactionsImpl(io.smallrye.reactive.messaging.EmitterConfiguration config, long defaultBufferSize, KafkaClientService clientService)
-
-
Method Detail
-
isTransactionInProgress
public boolean isTransactionInProgress()
- Specified by:
isTransactionInProgressin interfaceKafkaTransactions<T>- Returns:
trueif a transaction is in progress.
-
withTransaction
@CheckReturnValue public <R> io.smallrye.mutiny.Uni<R> withTransaction(Function<TransactionalEmitter<T>,io.smallrye.mutiny.Uni<R>> work)
Description copied from interface:KafkaTransactionsProduce records in a Kafka transaction.The given processing function receives a
TransactionalEmitterfor producing records, and returns aUnithat will provide the result for a successful transaction.If this method is called on a Vert.x context, the processing function is also called on that context. Otherwise, it is called on the sending thread of the producer.
If the processing completes successfully, the producer is flushed and the transaction is committed. If the processing throws an exception, returns a failing
Uni, or marks theTransactionalEmitterfor abort, the transaction is aborted.- Specified by:
withTransactionin interfaceKafkaTransactions<T>- Type Parameters:
R- the return type- Parameters:
work- the processing function for producing records.- Returns:
- the
Unirepresenting the result of the transaction. If the transaction completes successfully, it will complete with the item returned from the work function. If the transaction completes with failure, it will fail with the reason.
-
withTransaction
@CheckReturnValue public <R> io.smallrye.mutiny.Uni<R> withTransaction(org.eclipse.microprofile.reactive.messaging.Message<?> message, Function<TransactionalEmitter<T>,io.smallrye.mutiny.Uni<R>> work)Description copied from interface:KafkaTransactionsProduce records in a Kafka transaction, by processing the given message exactly-once.If the processing completes successfully, before committing the transaction, the topic partition offsets of the given message will be committed to the transaction. If the processing needs to abort, after aborting the transaction, the consumer's position is reset to the last committed offset, effectively resuming the consumption from that offset.
- Specified by:
withTransactionin interfaceKafkaTransactions<T>- Parameters:
message- the incoming Kafka message expected to contain a metadataIncomingKafkaRecordBatchMetadataorIncomingKafkaRecordMetadata.work- the processing function for producing records.- Returns:
- the
Unirepresenting the result of the transaction. If the transaction completes successfully, it will complete with the item returned from the work function. If the transaction completes with failure, it will fail with the reason.
-
-