Interface MutinyEmitter<T>

  • Type Parameters:
    T - type of payload
    All Known Implementing Classes:
    MutinyEmitterImpl

    public interface MutinyEmitter<T>
    Interface used to feed a channel from an imperative piece of code.

    Instances are injected using:

     @Inject
     @Channel("my-channel")
     MutinyEmitter<String> emitter;
     

    You can use an injected emitter to send either payloads or Messages.

    The name of the channel (given in the Channel annotation) indicates which channel is fed. It must match the name used in a method using @Incoming or an outgoing channel configured in the application configuration.

    The OnOverflow annotation can be used to configure what to do if messages are sent using the `MutinyEmitter` when a downstream subscriber hasn't requested more messages.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void complete()
      Sends the completion event to the channel indicating that no other events will be sent afterward.
      void error​(Exception e)
      Sends a failure event to the channel.
      boolean hasRequests()  
      boolean isCancelled()  
      <M extends Message<? extends T>>
      void
      send​(M msg)
      Sends a message to the channel.
      io.smallrye.mutiny.Uni<Void> send​(T payload)
      Sends a payload to the channel.
      void sendAndAwait​(T payload)
      Sends a payload to the channel.
      io.smallrye.mutiny.subscription.Cancellable sendAndForget​(T payload)
      Sends a payload to the channel without waiting for acknowledgement.
    • Method Detail

      • send

        @CheckReturnValue
        io.smallrye.mutiny.Uni<Void> send​(T payload)
        Sends a payload to the channel.

        A Message object will be created to hold the payload and the returned Uni can be subscribed to for triggering the send. When subscribed, a null item will be passed to the Uni when the Message is acknowledged. If the Message is never acknowledged, then the Uni will never be completed.

        The Message will not be sent to the channel until the Uni has been subscribed to:

         emitter.send("a").subscribe().with(x -> {
         });
         
        Parameters:
        payload - the thing to send, must not be null
        Returns:
        the Uni, that requires subscription to send the Message.
        Throws:
        IllegalStateException - if the channel has been cancelled or terminated or if an overflow strategy of THROW_EXCEPTION or BUFFER is configured and the emitter overflows.
      • sendAndAwait

        void sendAndAwait​(T payload)
        Sends a payload to the channel.

        A Message object will be created to hold the payload.

        Execution will block waiting for the resulting Message to be acknowledged before returning.

        Parameters:
        payload - the thing to send, must not be null
        Throws:
        IllegalStateException - if the channel has been cancelled or terminated or if an overflow strategy of THROW_EXCEPTION or BUFFER is configured and the emitter overflows.
      • sendAndForget

        io.smallrye.mutiny.subscription.Cancellable sendAndForget​(T payload)
        Sends a payload to the channel without waiting for acknowledgement.

        A Message object will be created to hold the payload.

        Parameters:
        payload - the thing to send, must not be null
        Returns:
        the Cancellable from the subscribed Uni.
        Throws:
        IllegalStateException - if the channel has been cancelled or terminated or if an overflow strategy of THROW_EXCEPTION or BUFFER is configured and the emitter overflows.
      • send

        <M extends Message<? extends T>> void send​(M msg)
        Sends a message to the channel.
        Type Parameters:
        M - the Message type
        Parameters:
        msg - the Message to send, must not be null
        Throws:
        IllegalStateException - if the channel has been cancelled or terminated or if an overflow strategy of THROW_EXCEPTION or BUFFER is 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

        void error​(Exception e)
        Sends a failure event to the channel. No more events will be sent afterward.
        Parameters:
        e - the exception, must not be null
      • isCancelled

        boolean isCancelled()
        Returns:
        true if the emitter has been terminated or the subscription cancelled.
      • hasRequests

        boolean hasRequests()
        Returns:
        true if one or more subscribers request messages from the corresponding channel where the emitter connects to, return false otherwise.