org.eclipse.microprofile.reactive.messaging

## Annotation Type Outgoing

    @Target(value=METHOD)
     @Retention(value=RUNTIME)
    public @interface Outgoing

Used to signify a publisher of outgoing messages.

Methods annotated with this annotation must have one of the following shapes:

- Take zero parameters, and return a `PublisherBuilder`, or a `Publisher`.
- Take zero parameters, and return a `ProcessorBuilder` or a `Processor`.
- Take zero parameters, and return a `CompletionStage`.
- Take zero parameters, and return any type.

In addition, implementations of this specification may allow returning additional types, such as implementation specific types for representing Reactive Streams, however taking advantage of these features provided by implementations will result in a non portable application.

The method shapes that return a processor, or accept a single parameter, must also have an `Incoming` annotation, methods that do not have this will cause a definition exception to be raised by the container during initialization.

The type of the message emitted by the publisher may be wrapped in `Message`, or a subclass of it. All messaging providers must support `Message`, but messaging providers may also provide subclasses of `Message` in order to expose message transport specific features. Use of these sub classes will result in a non portable application. If the chosen messaging provider does not support the selected message wrapper, a deployment exception will be raised before the container is initialized.

If the outing message is wrapped in a `Message` wrapper, then it is the responsibility of the container to acknowledge messages, by invoking the `Message.ack()` method on each message it receives. Containers must be careful to invoke these messages in order, one at a time, unless configured not to through a container specific mechanism. Containers may provide the ability to configure batching of acks, or only acking one in every n messages.

See Also:
  `org.eclipse.microprofile.reactive.messaging`

### Required Element Summary

Required Elements
`String` `value` The name of the channel to publish to.

### Element Detail

#### value

    public abstract String value

The name of the channel to publish to.

Returns:
  the name of the channel, must not be blank.