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 Summary
Optional 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
-
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 replyMessageto theoutputChannel(). Defaults to30seconds. 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:
- ""
-
sendPartialResultsOnExpiry
String 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:
- ""
-
autoStartup
String autoStartupTheSmartLifecycleautoStartupoption. Can be specified as 'property placeholder', e.g.${foo.autoStartup}. Defaults totrue.- Returns:
- the auto startup
booleanflag.
- Default:
- ""
-
phase
String phaseSpecify aSmartLifecyclephaseoption. DefaultsInteger.MAX_VALUE / 2forPollingConsumerandInteger.MIN_VALUEforEventDrivenConsumer. Can be specified as 'property placeholder', e.g.${foo.phase}.- Returns:
- the
SmartLifecyclephase.
- Default:
- ""
-
poller
Poller 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")
-
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")
-