Annotation Type MessagingGateway


@Target(TYPE)
@Retention(RUNTIME)
@Documented
public @interface MessagingGateway
A stereotype annotation to provide an Integration Messaging Gateway Proxy (<gateway/>) 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.

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

    Optional Elements 
    Modifier and Type Optional Element Description
    String asyncExecutor
    Provide a reference to an implementation of Executor to use for any of the interface methods that have a Future return type.
    GatewayHeader[] defaultHeaders
    Provides custom message headers.
    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.
    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.
    String defaultReplyTimeout
    Allows to specify how long this gateway will wait for the reply Message before returning.
    String defaultRequestChannel
    Identifies the default channel to which messages will be sent upon invocation of methods of the gateway proxy.
    String defaultRequestTimeout
    Provides the amount of time dispatcher would wait to send a Message.
    String errorChannel
    Identifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation.
    String mapper
    An MethodArgsMessageMapper to map the method arguments to a Message.
    String 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.
    boolean proxyDefaultMethods
    Indicate if default methods on the interface should be proxied as well.
  • Element Details

    • name

      String 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.
      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.
      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.
      Returns:
      the suggested timeout in milliseconds, if any
      Default:
      "-9223372036854775808"
    • defaultReplyTimeout

      String defaultReplyTimeout
      Allows to specify how long this gateway will wait for the reply Message before returning. By default it will wait indefinitely. 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.
      Returns:
      the suggested timeout in milliseconds, if any
      Default:
      "-9223372036854775808"
    • 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).
      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).
      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