Interface ContextualEmitter<T>
- Type Parameters:
T- the payload type
- All Superinterfaces:
io.smallrye.reactive.messaging.EmitterType
- All Known Implementing Classes:
ContextualEmitterImpl
public interface ContextualEmitter<T>
extends io.smallrye.reactive.messaging.EmitterType
Emitter implementation that plays better with context propagation, especially with the request scoped context.
The message emit of this emitter makes sure that
- the message context is captured when active thread context plan is applied
- the message is emitted only after the context propagation ends the context switch, destroying the intermediate state for cleared contexts.
-
Method Summary
Modifier and TypeMethodDescriptionvoidcomplete()Sends the completion event to the channel indicating that no other events will be sent afterward.voidSends a failure event to the channel.booleanbooleanio.smallrye.mutiny.Uni<Void> Sends a payload to the channel.voidsendAndAwait(T payload) Sends a payload to the channel.io.smallrye.mutiny.subscription.CancellablesendAndForget(T payload) Sends a payload to the channel without waiting for acknowledgement.<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>>
io.smallrye.mutiny.Uni<Void> sendMessage(M msg) Sends a message to the channel.<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>>
voidsendMessageAndAwait(M msg) Sends a message to the channel.<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>>
io.smallrye.mutiny.subscription.CancellablesendMessageAndForget(M msg) Sends a message to the channel without waiting for acknowledgement.
-
Method Details
-
send
Sends a payload to the channel.A
Messageobject will be created to hold the payload and the returnedUnican be subscribed to for triggering the send. When subscribed, anullitem will be passed to theUniwhen theMessageis acknowledged. If theMessageis never acknowledged, then theUniwill never be completed.The
Messagewill not be sent to the channel until theUnihas been subscribed to:emitter.send("a").subscribe().with(x -> { });- Parameters:
payload- the thing to send, must not benull- Returns:
- the
Uni, that requires subscription to send theMessage. - Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
sendAndAwait
Sends a payload to the channel.A
Messageobject will be created to hold the payload.Execution will block waiting for the resulting
Messageto be acknowledged before returning.- Parameters:
payload- the thing to send, must not benull- Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
sendAndForget
Sends a payload to the channel without waiting for acknowledgement.A
Messageobject will be created to hold the payload.- Parameters:
payload- the thing to send, must not benull- Returns:
- the
Cancellablefrom the subscribedUni. - Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
sendMessage
@CheckReturnValue <M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>> io.smallrye.mutiny.Uni<Void> sendMessage(M msg) Sends a message to the channel.- Type Parameters:
M- the Message type- Parameters:
msg- the Message to send, must not benull- Returns:
- the
Uni, that requires subscription to send theMessage. - Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
sendMessageAndAwait
<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>> void sendMessageAndAwait(M msg) Sends a message to the channel. Execution will block waiting for the resultingMessageto be acknowledged before returning.- Type Parameters:
M- the Message type- Parameters:
msg- the Message to send, must not benull- Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
sendMessageAndForget
<M extends org.eclipse.microprofile.reactive.messaging.Message<? extends T>> io.smallrye.mutiny.subscription.Cancellable sendMessageAndForget(M msg) Sends a message to the channel without waiting for acknowledgement.- Type Parameters:
M- the Message type- Parameters:
msg- the Message to send, must not benull- Returns:
- the
Cancellablefrom the subscribedUni. - Throws:
IllegalStateException- if the channel has been cancelled or terminated or if an overflow strategy ofTHROW_EXCEPTIONorBUFFERis configured and the emitter overflows.
-
complete
void complete()Sends the completion event to the channel indicating that no other events will be sent afterward. -
error
Sends a failure event to the channel. No more events will be sent afterward.- Parameters:
e- the exception, must not benull
-
isCancelled
boolean isCancelled()- Returns:
trueif the emitter has been terminated or the subscription cancelled.
-
hasRequests
boolean hasRequests()- Returns:
trueif one or more subscribers request messages from the corresponding channel where the emitter connects to, returnfalseotherwise.
-