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 StringasyncExecutorGatewayHeader[]defaultHeadersProvides custom message headers.StringdefaultPayloadExpressionAn expression that will be used to generate thepayloadfor all methods in the service interface unless explicitly overridden by a method declaration.StringdefaultReplyChannelIdentifies the default channel the gateway proxy will subscribe to, to receive replyMessages, the payloads of which will be converted to the return type of the method signature.StringdefaultReplyTimeoutAllows to specify how long this gateway will wait for the replyMessagebefore returning.StringdefaultRequestChannelIdentifies the default channel to which messages will be sent upon invocation of methods of the gateway proxy.StringdefaultRequestTimeoutProvides the amount of time dispatcher would wait to send aMessage.StringerrorChannelIdentifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation.StringmapperAnMethodArgsMessageMapperto map the method arguments to aMessage.StringnameThe value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.booleanproxyDefaultMethodsIndicate ifdefaultmethods on the interface should be proxied as well.
-
Element Details
-
name
String nameThe 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 defaultRequestChannelIdentifies 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 defaultReplyChannelIdentifies the default channel the gateway proxy will subscribe to, to receive replyMessages, 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 errorChannelIdentifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation. If noerrorChannelreference is provided, the gateway will propagateExceptions to the caller. To completely suppressExceptions, provide a reference to thenullChannelhere.- Returns:
- the suggested channel name, if any
- Default:
- ""
-
defaultRequestTimeout
String defaultRequestTimeoutProvides the amount of time dispatcher would wait to send aMessage. 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 aQueueChannel. 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 defaultReplyTimeoutAllows to specify how long this gateway will wait for the replyMessagebefore returning. By default it will wait indefinitely.nullis 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 asyncExecutorProvide a reference to an implementation ofExecutorto use for any of the interface methods that have aFuturereturn type. ThisExecutorwill only be used for those async methods; the sync methods will be invoked in the caller's thread. UseAnnotationConstants.NULLto specify no async executor - for example if your downstream flow returns aFuture.- Returns:
- the suggested executor bean name, if any
- Default:
- ""
-
defaultPayloadExpression
String defaultPayloadExpressionAn expression that will be used to generate thepayloadfor all methods in the service interface unless explicitly overridden by a method declaration. Variables include#args,#methodName,#methodStringand#methodObject; a bean resolver is also available, enabling expressions like@someBean(#args).- Returns:
- the suggested payload expression, if any
- Default:
- ""
-
defaultHeaders
GatewayHeader[] defaultHeadersProvides 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 mapperAnMethodArgsMessageMapperto map the method arguments to aMessage. When this is provided, nopayload-expressions orheaders are allowed; the custom mapper is responsible for creating the message.- Returns:
- the suggested mapper bean name, if any
- Default:
- ""
-
proxyDefaultMethods
boolean proxyDefaultMethodsIndicate ifdefaultmethods on the interface should be proxied as well. If an explicitGatewayannotation is present on method it is proxied independently of this option. Note: default methods in JDK classes (such asFunction) can be proxied, but cannot be invoked viaMethodHandleby an internal Java security restriction forMethodHandle.Lookup.- Returns:
- the boolean flag to proxy default methods or invoke via
MethodHandle. - Since:
- 5.3
- Default:
- false
-