Annotation Interface MessagingGateway


@Target(TYPE) @Retention(RUNTIME) @MessageEndpoint public @interface MessagingGateway
A stereotype annotation to provide an Integration Messaging Gateway Proxy as an abstraction over the messaging API. The target application's business logic may be completely unaware of the Spring Integration API, with the code interacting only via the interface.

Important: The IntegrationComponentScan annotation is required along with Configuration to scan interfaces annotated with MessagingGateway, because the standard ComponentScan ignores interfaces.

The Gateway annotation can be used for the per interface method configuration.

Since:
4.0
Author:
Artem Bilan, Gary Russell
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Provide a reference to an implementation of Executor to use for any of the interface methods that have a Future return type.
    Provides custom message headers.
    An expression that will be used to generate the payload for all methods in the service interface unless explicitly overridden by a method declaration.
    Identifies the default channel the gateway proxy will subscribe to, to receive reply Messages, the payloads of which will be converted to the return type of the method signature.
    Allows to specify how long this gateway will wait for the reply Message before returning.
    Identifies the default channel to which messages will be sent upon invocation of methods of the gateway proxy.
    Provides the amount of time dispatcher would wait to send a Message.
    Identifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation.
    boolean
    If errorOnTimeout is true, null won't be returned as a result of a gateway method invocation when a timeout occurs.
    An MethodArgsMessageMapper to map the method arguments to a Message.
    The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
    boolean
    Indicate if default methods on the interface should be proxied as well.
    The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
  • Element Details

    • value

      The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
      Returns:
      the suggested component name, if any
      Since:
      6.0
      Default:
      ""
    • name

      The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
      Returns:
      the suggested component name, if any
      Default:
      ""
    • defaultRequestChannel

      String defaultRequestChannel
      Identifies the default channel to which messages will be sent upon invocation of methods of the gateway proxy. See Gateway.requestChannel() for per-method configuration.
      Returns:
      the suggested channel name, if any
      Default:
      ""
    • defaultReplyChannel

      String defaultReplyChannel
      Identifies the default channel the gateway proxy will subscribe to, to receive reply Messages, the payloads of which will be converted to the return type of the method signature. See Gateway.replyChannel() for per-method configuration.
      Returns:
      the suggested channel name, if any
      Default:
      ""
    • errorChannel

      String errorChannel
      Identifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation. If no errorChannel reference is provided, the gateway will propagate Exceptions to the caller. To completely suppress Exceptions, provide a reference to the nullChannel here.
      Returns:
      the suggested channel name, if any
      Default:
      ""
    • defaultRequestTimeout

      String defaultRequestTimeout
      Provides the amount of time dispatcher would wait to send a Message. This timeout would only apply if there is a potential to block in the send call. For example if this gateway is hooked up to a QueueChannel. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. See Gateway.requestTimeout() for per-method configuration.
      Returns:
      the suggested timeout in milliseconds, if any
      Default:
      "30000"
    • defaultReplyTimeout

      String defaultReplyTimeout
      Allows to specify how long this gateway will wait for the reply Message before returning. The null is returned if the gateway times out. Value is specified in milliseconds; it can be a simple long value or a SpEL expression; array variable #args is available. See Gateway.replyTimeout() for per-method configuration.
      Returns:
      the suggested timeout in milliseconds, if any
      Default:
      "30000"
    • asyncExecutor

      String asyncExecutor
      Provide a reference to an implementation of Executor to use for any of the interface methods that have a Future return type. This Executor will only be used for those async methods; the sync methods will be invoked in the caller's thread. Use AnnotationConstants.NULL to specify no async executor - for example if your downstream flow returns a Future.
      Returns:
      the suggested executor bean name, if any
      Default:
      ""
    • defaultPayloadExpression

      String defaultPayloadExpression
      An expression that will be used to generate the payload for all methods in the service interface unless explicitly overridden by a method declaration. Variables include #args, #methodName, #methodString and #methodObject; a bean resolver is also available, enabling expressions like @someBean(#args). See Gateway.payloadExpression() for per-method configuration.
      Returns:
      the suggested payload expression, if any
      Default:
      ""
    • defaultHeaders

      GatewayHeader[] defaultHeaders
      Provides custom message headers. These default headers are created for all methods on the service-interface (unless overridden by a specific method). See Gateway.headers() for per-method configuration.
      Returns:
      the suggested payload expression, if any
      Default:
      {}
    • mapper

      String mapper
      An MethodArgsMessageMapper to map the method arguments to a Message. When this is provided, no payload-expressions or headers are allowed; the custom mapper is responsible for creating the message.
      Returns:
      the suggested mapper bean name, if any
      Default:
      ""
    • proxyDefaultMethods

      boolean proxyDefaultMethods
      Indicate if default methods on the interface should be proxied as well. If an explicit Gateway annotation is present on method it is proxied independently of this option. Note: default methods in JDK classes (such as Function) can be proxied, but cannot be invoked via MethodHandle by an internal Java security restriction for MethodHandle.Lookup.
      Returns:
      the boolean flag to proxy default methods or invoke via MethodHandle.
      Since:
      5.3
      Default:
      false
    • errorOnTimeout

      boolean errorOnTimeout
      If errorOnTimeout is true, null won't be returned as a result of a gateway method invocation when a timeout occurs. Instead, a MessageTimeoutException is thrown or an error message is published to the error channel.
      Since:
      6.2
      See Also:
      Default:
      false