@Target(value={METHOD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented public @interface ServiceActivator
A method annotated with @ServiceActivator may accept a parameter of type
Message
or of the expected
Message payload's type. Any type conversion supported by
SimpleTypeConverter
will be applied to
the Message payload if necessary. Header values can also be passed as
Message parameters by using the
@Header
parameter annotation.
Return values from the annotated method may be of any type. If the return value is not a Message, a reply Message will be created with that object as its payload.
Modifier and Type | Optional Element and Description |
---|---|
String[] |
adviceChain
Specify a "chain" of
Advice beans that will "wrap" the message handler. |
String |
async
Specify whether the service method is async.
|
String |
autoStartup
The
SmartLifecycle autoStartup option. |
String |
inputChannel
Specify the channel from which this service activator will consume messages.
|
String |
outputChannel
Specify the channel to which this service activator will send any replies.
|
String |
phase
Specify a
SmartLifecycle phase option. |
Poller[] |
poller |
String |
requiresReply
Specify whether the service method must return a non-null value.
|
String |
sendTimeout
Specify the maximum amount of time in milliseconds to wait when sending a reply
Message to the outputChannel . |
public abstract String inputChannel
DirectChannel
with this name will be
registered in the application context.public abstract String outputChannel
public abstract String requiresReply
false
by default, but if set to true
, a
ReplyRequiredException
will is thrown when
the underlying service method (or expression) returns a null value.
Can be specified as 'property placeholder', e.g. ${spring.integration.requiresReply}
.public abstract String[] adviceChain
Advice
beans that will "wrap" the message handler.
Only the handler is advised, not the downstream flow.public abstract String sendTimeout
Message
to the outputChannel
.
Defaults to -1
- blocking indefinitely.
It is applied only if the output channel has some 'sending' limitations, e.g.
QueueChannel
with
fixed a 'capacity'. In this case a MessageDeliveryException
is thrown.
The 'sendTimeout' is ignored in case of
AbstractSubscribableChannel
implementations.
Can be specified as 'property placeholder', e.g. ${spring.integration.sendTimeout}
.public abstract String autoStartup
SmartLifecycle
autoStartup
option.
Can be specified as 'property placeholder', e.g. ${foo.autoStartup}
.
Defaults to true
.boolean
flag.public abstract String phase
SmartLifecycle
phase
option.
Defaults Integer.MAX_VALUE / 2
for PollingConsumer
and Integer.MIN_VALUE
for EventDrivenConsumer
.
Can be specified as 'property placeholder', e.g. ${foo.phase}
.SmartLifecycle
phase.public abstract String async
false
by default.public abstract Poller[] poller
Poller
options for a polled endpoint
(PollerMetadata
).
This attribute is an array
just to allow an empty default (no poller).
Only one Poller
element is allowed.