Annotation Interface Outgoing


@Target(METHOD) @Retention(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.
  • Accept a single parameter, and return a CompletionStage.
  • Accept a single parameter, 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:
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    The name of the channel to publish to.
  • Element Details

    • value

      String value
      The name of the channel to publish to.
      Returns:
      the name of the channel, must not be blank.