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
GatewayHeader[]
defaultHeaders
Provides custom message headers.String
defaultPayloadExpression
An expression that will be used to generate thepayload
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 replyMessage
s, 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 replyMessage
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 aMessage
.String
errorChannel
Identifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation.String
mapper
AnMethodArgsMessageMapper
to map the method arguments to aMessage
.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 ifdefault
methods 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 replyMessage
s, 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 noerrorChannel
reference is provided, the gateway will propagateException
s to the caller. To completely suppressException
s, provide a reference to thenullChannel
here.- 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 replyMessage
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 asyncExecutorProvide a reference to an implementation ofExecutor
to use for any of the interface methods that have aFuture
return type. ThisExecutor
will only be used for those async methods; the sync methods will be invoked in the caller's thread. UseAnnotationConstants.NULL
to 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 thepayload
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[] 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 mapperAnMethodArgsMessageMapper
to map the method arguments to aMessage
. When this is provided, nopayload-expression
s orheader
s are allowed; the custom mapper is responsible for creating the message.- Returns:
- the suggested mapper bean name, if any
- Default:
- ""
-
proxyDefaultMethods
boolean proxyDefaultMethodsIndicate ifdefault
methods on the interface should be proxied as well. If an explicitGateway
annotation 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 viaMethodHandle
by an internal Java security restriction forMethodHandle.Lookup
.- Returns:
- the boolean flag to proxy default methods or invoke via
MethodHandle
. - Since:
- 5.3
- Default:
- false
-