org.eclipse.microprofile.reactive.messaging

## Interface Emitter<T>

Type Parameters:
  `T` - type of payload

    public interface Emitter<T>

Interface used to feed a channel from an imperative piece of code.

Instances are injected using:

     @Inject
     @Channel("my-channel")
     Emitter<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 `Emitter` when a downstream subscriber hasn't requested more messages.

### Method Summary

All Methods Instance Methods Abstract Methods
`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.
`CompletionStage<Void>` `send(T msg)` Sends a payload to the channel.

### Method Detail

#### send

    CompletionStage<Void> send(T msg)

Sends a payload to the channel.

A `Message` object will be created to hold the payload and the returned `CompletionStage` will be completed once this `Message` is acknowledged. If the `Message` is never acknowledged, then the `CompletionStage` will never be completed.

Parameters:
  `msg` - the thing to send, must not be `null`
Returns:
  the `CompletionStage`, which will be completed when the message for this payload is acknowledged. If the emitted message is nacked, the produced completion stage is completed exceptionally.
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.