Annotation Interface Aggregator
@Target({METHOD,ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
@Repeatable(Aggregators.class)
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, Chris Bono
- 
Optional Element SummaryOptional ElementsModifier and TypeOptional ElementDescriptionTheSmartLifecycleautoStartupoption.Specify aSmartLifecyclephaseoption.Specify whether messages that expired should be aggregated and sent to theoutputChannel()orreplyChannelfrom message headers.Specify the maximum amount of time in milliseconds to wait when sending a replyMessageto theoutputChannel().
- 
Element Details- 
inputChannelString inputChannel- Returns:
- The channel name for receiving messages to be aggregated
 - Default:
- ""
 
- 
outputChannelString outputChannel- Returns:
- The channel name for sending aggregated result messages
 - Default:
- ""
 
- 
discardChannelString discardChannel- Returns:
- The channel name for sending discarded messages (due to a timeout)
 - Default:
- ""
 
- 
sendTimeoutString sendTimeoutSpecify the maximum amount of time in milliseconds to wait when sending a replyMessageto theoutputChannel(). Defaults to-1- blocking indefinitely. It is applied only if the output channel has some 'sending' limitations, e.g.QueueChannelwith a fixed 'capacity' and is currently full. In this case aMessageDeliveryExceptionis thrown. The 'sendTimeout' is ignored in case ofAbstractSubscribableChannelimplementations. Can be specified as 'property placeholder', e.g.${spring.integration.sendTimeout}.- Returns:
- The timeout for sending results to the reply target (in milliseconds)
 - Default:
- ""
 
- 
sendPartialResultsOnExpiryString sendPartialResultsOnExpirySpecify whether messages that expired should be aggregated and sent to theoutputChannel()orreplyChannelfrom message headers. Messages are expired when their containingMessageGroupexpires. 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 theMessageGroupStoreinstance. 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:
- ""
 
- 
autoStartupString autoStartupTheSmartLifecycleautoStartupoption. Can be specified as 'property placeholder', e.g.${foo.autoStartup}. Defaults totrue.- Returns:
- the auto startup booleanflag.
 - Default:
- ""
 
- 
phaseString phaseSpecify aSmartLifecyclephaseoption. DefaultsInteger.MAX_VALUE / 2forPollingConsumerandInteger.MIN_VALUEforEventDrivenConsumer. Can be specified as 'property placeholder', e.g.${foo.phase}.- Returns:
- the SmartLifecyclephase.
 - Default:
- ""
 
- 
pollerPoller poller- Returns:
- the Polleroptions for a polled endpoint (PollerMetadata). Mutually exclusive withreactive().
 - Default:
- @org.springframework.integration.annotation.Poller("\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n")
 
- 
reactiveReactive reactive- Default:
- @org.springframework.integration.annotation.Reactive("\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n")
 
 
-