Annotation Type Aggregator
@Target({METHOD,ANNOTATION_TYPE}) @Retention(RUNTIME) @Documented public @interface Aggregator
Indicates that a method is capable of aggregating messages.
A method annotated with @Aggregator may accept a collection of Messages or Message payloads and should return a single Message or a single Object to be used as a Message payload.
- Author:
- Marius Bogoevici, Oleg Zhurakousky, Artem Bilan
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description String
autoStartup
TheSmartLifecycle
autoStartup
option.String
discardChannel
String
inputChannel
String
outputChannel
String
phase
Specify aSmartLifecycle
phase
option.Poller[]
poller
Reactive
reactive
String
sendPartialResultsOnExpiry
Specify whether messages that expired should be aggregated and sent to theoutputChannel()
orreplyChannel
from message headers.String
sendTimeout
Specify the maximum amount of time in milliseconds to wait when sending a replyMessage
to theoutputChannel()
.
-
Element Details
-
inputChannel
String inputChannel- Returns:
- The channel name for receiving messages to be aggregated
- Default:
- ""
-
outputChannel
String outputChannel- Returns:
- The channel name for sending aggregated result messages
- Default:
- ""
-
discardChannel
String discardChannel- Returns:
- The channel name for sending discarded messages (due to a timeout)
- Default:
- ""
-
sendTimeout
String sendTimeoutSpecify the maximum amount of time in milliseconds to wait when sending a replyMessage
to theoutputChannel()
. Defaults to-1
- blocking indefinitely. It is applied only if the output channel has some 'sending' limitations, e.g.QueueChannel
with a fixed 'capacity' and is currently full. In this case aMessageDeliveryException
is thrown. The 'sendTimeout' is ignored in case ofAbstractSubscribableChannel
implementations. Can be specified as 'property placeholder', e.g.${spring.integration.sendTimeout}
.- Returns:
- The timeout for sending results to the reply target (in milliseconds)
- Default:
- ""
-
sendPartialResultsOnExpiry
String sendPartialResultsOnExpirySpecify whether messages that expired should be aggregated and sent to theoutputChannel()
orreplyChannel
from message headers. Messages are expired when their containingMessageGroup
expires. One of the ways of expiring MessageGroups is by configuring aMessageGroupStoreReaper
. However MessageGroups can alternatively be expired by simply callingMessageGroupStore.expireMessageGroup(groupId)
. That could be accomplished via a ControlBus operation or by simply invoking that method if you have a reference to theMessageGroupStore
instance. Defaults tofalse
. * Can be specified as 'property placeholder', e.g.${spring.integration.sendPartialResultsOnExpiry}
.- Returns:
- Indicates whether to send an incomplete aggregate on expiry of the message group
- Default:
- ""
-
autoStartup
String autoStartupTheSmartLifecycle
autoStartup
option. Can be specified as 'property placeholder', e.g.${foo.autoStartup}
. Defaults totrue
.- Returns:
- the auto startup
boolean
flag.
- Default:
- ""
-
phase
String phaseSpecify aSmartLifecycle
phase
option. DefaultsInteger.MAX_VALUE / 2
forPollingConsumer
andInteger.MIN_VALUE
forEventDrivenConsumer
. Can be specified as 'property placeholder', e.g.${foo.phase}
.- Returns:
- the
SmartLifecycle
phase.
- Default:
- ""
-
poller
Poller[] poller- Returns:
- the
Poller
options for a polled endpoint (PollerMetadata
). This attribute is anarray
just to allow an empty default (no poller). Mutually exclusive withreactive()
.
- Default:
- {}
-
reactive
Reactive reactive- Default:
- @org.springframework.integration.annotation.Reactive("\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n")
-