public class RecipientListRouter extends AbstractMessageRouter implements InitializingBean, RecipientListRouterManagement
<recipient-list-router id="simpleRouter" input-channel="routingChannelA">
<recipient channel="channel1"/>
<recipient channel="channel2"/>
</recipient-list-router>
A Message Router that sends Messages to a list of recipient channels. The
recipients can be provided as a static list of MessageChannel
instances via the setChannels(List) method, or for dynamic behavior,
the values can be provided via the setRecipients(List) method.
For more advanced, programmatic control of dynamic recipient lists, consider
using the @Router annotation or extending AbstractMappingMessageRouter instead.
Contrary to a standard <router .../> this handler will try to send to all channels that are configured as recipients. It is to channels what a publish subscribe channel is to endpoints.
Using this class only makes sense if it is essential to send messages on multiple channels instead of sending them to multiple handlers. If the latter is an option using a publish subscribe channel is the more flexible solution.
| Modifier and Type | Class and Description |
|---|---|
static class |
RecipientListRouter.Recipient |
EXPRESSION_PARSER, loggerHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
RecipientListRouter() |
| Modifier and Type | Method and Description |
|---|---|
void |
addRecipient(String channelName)
Add a recipient with channelName.
|
void |
addRecipient(String channelName,
String selectorExpression)
Add a recipient with channelName and expression.
|
protected Collection<MessageChannel> |
determineTargetChannels(Message<?> message)
Subclasses must implement this method to return a Collection of zero or more
MessageChannels to which the given Message should be routed.
|
String |
getComponentType()
Subclasses may implement this method to provide component type information.
|
Collection<RecipientListRouter.Recipient> |
getRecipients() |
int |
removeRecipient(String channelName)
Remove all recipients that match the channelName.
|
int |
removeRecipient(String channelName,
String selectorExpression)
Remove all recipients that match the channelName and expression.
|
void |
replaceRecipients(Properties recipientMappings)
Replace recipient.
|
void |
setChannels(List<MessageChannel> channels)
Set the channels for this router.
|
void |
setRecipientMappings(Map<String,String> recipientMappings)
Set the recipients for this router.
|
void |
setRecipients(List<RecipientListRouter.Recipient> recipients)
Set the recipients for this router.
|
getDefaultOutputChannel, getMessagingTemplate, getRequiredConversionService, handleMessageInternal, onInit, setApplySequence, setDefaultOutputChannel, setDefaultOutputChannelName, setIgnoreSendFailures, setSendTimeout, setTimeoutconfigureMetrics, getActiveCount, getActiveCountLong, getDuration, getErrorCount, getErrorCountLong, getHandleCount, getHandleCountLong, getManagedName, getManagedType, getMaxDuration, getMeanDuration, getMinDuration, getOrder, getStandardDeviationDuration, handleMessage, isCountsEnabled, isLoggingEnabled, isStatsEnabled, reset, setCountsEnabled, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, setStatsEnabledafterPropertiesSet, extractTypeIfPossible, getApplicationContext, getApplicationContextId, getBeanFactory, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitafterPropertiesSetgetComponentNamepublic void setChannels(List<MessageChannel> channels)
setRecipients(List) but not both. If MessageSelectors should be
considered, then use setRecipients(List).channels - The channels.public void setRecipients(List<RecipientListRouter.Recipient> recipients)
recipients - The recipients.@ManagedAttribute public void setRecipientMappings(Map<String,String> recipientMappings)
setRecipientMappings in interface RecipientListRouterManagementrecipientMappings - map contains channelName and expressionpublic String getComponentType()
IntegrationObjectSupportgetComponentType in interface NamedComponentgetComponentType in class AbstractMessageRouterprotected Collection<MessageChannel> determineTargetChannels(Message<?> message)
AbstractMessageRouterdetermineTargetChannels in class AbstractMessageRoutermessage - The message.@ManagedOperation public void addRecipient(String channelName, String selectorExpression)
RecipientListRouterManagementaddRecipient in interface RecipientListRouterManagementchannelName - The channel name.selectorExpression - The expression to filter the incoming message.@ManagedOperation public void addRecipient(String channelName)
RecipientListRouterManagementaddRecipient in interface RecipientListRouterManagementchannelName - The channel name.@ManagedOperation public int removeRecipient(String channelName)
RecipientListRouterManagementremoveRecipient in interface RecipientListRouterManagementchannelName - The channel name.@ManagedOperation public int removeRecipient(String channelName, String selectorExpression)
RecipientListRouterManagementremoveRecipient in interface RecipientListRouterManagementchannelName - The channel name.selectorExpression - The expression to filter the incoming message@ManagedAttribute public Collection<RecipientListRouter.Recipient> getRecipients()
getRecipients in interface RecipientListRouterManagement@ManagedOperation public void replaceRecipients(Properties recipientMappings)
RecipientListRouterManagementreplaceRecipients in interface RecipientListRouterManagementrecipientMappings - contain channelName and expression.