public class RecipientListRouter extends AbstractMessageRouter implements 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 |
IntegrationManagement.ManagementOverrides
EXPRESSION_PARSER, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
Constructor and Description |
---|
RecipientListRouter() |
Modifier and Type | Method and Description |
---|---|
void |
addRecipient(MessageChannel channel) |
void |
addRecipient(MessageChannel channel,
MessageSelector selector) |
void |
addRecipient(String channelName)
Add a recipient with channelName.
|
void |
addRecipient(String channelName,
MessageSelector selector) |
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.
|
IntegrationPatternType |
getIntegrationPatternType()
Return a pattern type this component implements.
|
Collection<RecipientListRouter.Recipient> |
getRecipients() |
protected void |
onInit()
Subclasses may implement this for initialization logic.
|
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, setApplySequence, setDefaultOutputChannel, setDefaultOutputChannelName, setIgnoreSendFailures, setSendTimeout
handleMessage, onComplete, onError, onNext, onSubscribe
buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getThisAs
getBeanName, getComponentName
public 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 RecipientListRouterManagement
recipientMappings
- map contains channelName and expression@ManagedOperation public void addRecipient(String channelName, String selectorExpression)
RecipientListRouterManagement
addRecipient
in interface RecipientListRouterManagement
channelName
- The channel name.selectorExpression
- The expression to filter the incoming message.@ManagedOperation public void addRecipient(String channelName)
RecipientListRouterManagement
addRecipient
in interface RecipientListRouterManagement
channelName
- The channel name.public void addRecipient(String channelName, MessageSelector selector)
public void addRecipient(MessageChannel channel)
public void addRecipient(MessageChannel channel, MessageSelector selector)
@ManagedOperation public int removeRecipient(String channelName)
RecipientListRouterManagement
removeRecipient
in interface RecipientListRouterManagement
channelName
- The channel name.@ManagedOperation public int removeRecipient(String channelName, String selectorExpression)
RecipientListRouterManagement
removeRecipient
in interface RecipientListRouterManagement
channelName
- The channel name.selectorExpression
- The expression to filter the incoming message@ManagedOperation public void replaceRecipients(Properties recipientMappings)
RecipientListRouterManagement
replaceRecipients
in interface RecipientListRouterManagement
recipientMappings
- contain channelName and expression.@ManagedAttribute public Collection<RecipientListRouter.Recipient> getRecipients()
getRecipients
in interface RecipientListRouterManagement
public String getComponentType()
IntegrationObjectSupport
getComponentType
in interface NamedComponent
getComponentType
in class AbstractMessageRouter
public IntegrationPatternType getIntegrationPatternType()
IntegrationPattern
getIntegrationPatternType
in interface IntegrationPattern
getIntegrationPatternType
in class AbstractMessageRouter
IntegrationPatternType
this component implements.protected Collection<MessageChannel> determineTargetChannels(Message<?> message)
AbstractMessageRouter
determineTargetChannels
in class AbstractMessageRouter
message
- The message.protected void onInit()
IntegrationObjectSupport
onInit
in class AbstractMessageRouter