Class PulsarTransactionsImpl<T>
- All Implemented Interfaces:
io.smallrye.reactive.messaging.EmitterType,io.smallrye.reactive.messaging.MessagePublisherProvider<T>,io.smallrye.reactive.messaging.MutinyEmitter<T>,PulsarTransactions<T>
-
Field Summary
Fields inherited from class io.smallrye.reactive.messaging.providers.extension.AbstractEmitter
internal, name, NO_SUBSCRIBER_EXCEPTION, publisher, synchronousFailure -
Constructor Summary
ConstructorsConstructorDescriptionPulsarTransactionsImpl(io.smallrye.reactive.messaging.EmitterConfiguration config, long defaultBufferSize, PulsarClientService pulsarClientService) -
Method Summary
Modifier and TypeMethodDescriptionboolean<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>>
voidsend(TransactionalEmitter<?> emitter, M msg) Send message to an already started transactionvoidsend(TransactionalEmitter<?> emitter, T payload) Send message to an already started transaction<R> io.smallrye.mutiny.Uni<R>withTransaction(Duration txnTimeout, Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Produce records in a Pulsar transaction.<R> io.smallrye.mutiny.Uni<R>withTransaction(Duration txnTimeout, org.eclipse.microprofile.reactive.messaging.Message<?> message, Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Produce records in a Pulsar transaction, by processing the given message exactly-once.<R> io.smallrye.mutiny.Uni<R>withTransaction(Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Produce records in a Pulsar 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 Pulsar transaction, by processing the given message exactly-once.Methods inherited from class io.smallrye.reactive.messaging.providers.extension.MutinyEmitterImpl
send, send, sendAndAwait, sendAndForget, sendMessage, sendMessageAndAwait, sendMessageAndForgetMethods inherited from class io.smallrye.reactive.messaging.providers.extension.AbstractEmitter
complete, emit, error, getPublisher, hasRequests, isCancelled, verifyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.smallrye.reactive.messaging.MutinyEmitter
complete, error, hasRequests, isCancelledMethods inherited from interface io.smallrye.reactive.messaging.pulsar.transactions.PulsarTransactions
withTransactionAndAck, withTransactionAndAck
-
Constructor Details
-
PulsarTransactionsImpl
public PulsarTransactionsImpl(io.smallrye.reactive.messaging.EmitterConfiguration config, long defaultBufferSize, PulsarClientService pulsarClientService)
-
-
Method Details
-
withTransaction
public <R> io.smallrye.mutiny.Uni<R> withTransaction(Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Description copied from interface:PulsarTransactionsProduce records in a Pulsar 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 interfacePulsarTransactions<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
public <R> io.smallrye.mutiny.Uni<R> withTransaction(Duration txnTimeout, Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Description copied from interface:PulsarTransactionsProduce records in a Pulsar 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 interfacePulsarTransactions<T>- Type Parameters:
R- the return type- Parameters:
txnTimeout- the timeout of the transactionwork- 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
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:PulsarTransactionsProduce records in a Pulsar 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 interfacePulsarTransactions<T>- Parameters:
message- the incoming Pulsar message.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
public <R> io.smallrye.mutiny.Uni<R> withTransaction(Duration txnTimeout, org.eclipse.microprofile.reactive.messaging.Message<?> message, Function<TransactionalEmitter<T>, io.smallrye.mutiny.Uni<R>> work) Description copied from interface:PulsarTransactionsProduce records in a Pulsar 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 interfacePulsarTransactions<T>- Type Parameters:
R- type of the return- Parameters:
txnTimeout- the timeout of the transactionmessage- the incoming Pulsar message.work- 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.
-
send
public <M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>> void send(TransactionalEmitter<?> emitter, M msg) Description copied from interface:PulsarTransactionsSend message to an already started transaction- Specified by:
sendin interfacePulsarTransactions<T>- Type Parameters:
M- the type of the message to send- Parameters:
emitter- the emitter which holds the transactionmsg- the message to send
-
send
Description copied from interface:PulsarTransactionsSend message to an already started transaction- Specified by:
sendin interfacePulsarTransactions<T>- Parameters:
emitter- the emitter which holds the transactionpayload- the payload to send
-
isTransactionInProgress
public boolean isTransactionInProgress()- Specified by:
isTransactionInProgressin interfacePulsarTransactions<T>- Returns:
trueif a transaction is in progress.
-