Annotation 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 ElementsModifier and TypeOptional ElementDescriptionProvides custom message headers.An expression that will be used to generate thepayload
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 replyMessage
s, 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 replyMessage
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 aMessage
.Identifies a channel that error messages will be sent to if a failure occurs in the gateway's proxy invocation.AnMethodArgsMessageMapper
to map the method arguments to aMessage
.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 ifdefault
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 defaultRequestChannelIdentifies the default channel to which messages will be sent upon invocation of methods of the gateway proxy. SeeGateway.requestChannel()
for per-method configuration.- 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. SeeGateway.replyChannel()
for per-method configuration.- 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. SeeGateway.requestTimeout()
for per-method configuration.- Returns:
- the suggested timeout in milliseconds, if any
- Default:
- "30000"
-
defaultReplyTimeout
String defaultReplyTimeoutAllows to specify how long this gateway will wait for the replyMessage
before returning. Thenull
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. SeeGateway.replyTimeout()
for per-method configuration.- Returns:
- the suggested timeout in milliseconds, if any
- Default:
- "30000"
-
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)
. SeeGateway.payloadExpression()
for per-method configuration.- 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). SeeGateway.headers()
for per-method configuration.- 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
-