Spring Integration

org.springframework.integration.router
Class RecipientListRouter

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.AbstractMessageHandler
          extended by org.springframework.integration.router.AbstractMessageRouter
              extended by org.springframework.integration.router.RecipientListRouter
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, NamedComponent, Orderable, MessageHandler, TrackableComponent

public class RecipientListRouter
extends AbstractMessageRouter
implements org.springframework.beans.factory.InitializingBean

 <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.

Author:
Mark Fisher, Oleg Zhurakousky

Nested Class Summary
static class RecipientListRouter.Recipient
           
 
Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
RecipientListRouter()
           
 
Method Summary
protected  java.util.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.
 java.lang.String getComponentType()
          Subclasses may implement this method to provide component type information.
 void onInit()
          Subclasses may implement this for initialization logic.
 void setChannels(java.util.List<MessageChannel> channels)
          Set the channels for this router.
 void setRecipients(java.util.List<RecipientListRouter.Recipient> recipients)
          Set the recipients for this router.
 
Methods inherited from class org.springframework.integration.router.AbstractMessageRouter
getMessagingTemplate, getRequiredConversionService, handleMessageInternal, setApplySequence, setDefaultOutputChannel, setIgnoreSendFailures, setTimeout
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
getOrder, handleMessage, setOrder, setShouldTrack
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getComponentName, getConversionService, getTaskScheduler, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.beans.factory.InitializingBean
afterPropertiesSet
 
Methods inherited from interface org.springframework.integration.context.NamedComponent
getComponentName
 

Constructor Detail

RecipientListRouter

public RecipientListRouter()
Method Detail

setChannels

public void setChannels(java.util.List<MessageChannel> channels)
Set the channels for this router. Either call this method or setRecipients(List) but not both. If MessageSelectors should be considered, then use setRecipients(List).


setRecipients

public void setRecipients(java.util.List<RecipientListRouter.Recipient> recipients)
Set the recipients for this router.


getComponentType

public java.lang.String getComponentType()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this method to provide component type information.

Specified by:
getComponentType in interface NamedComponent
Overrides:
getComponentType in class AbstractMessageRouter

onInit

public final void onInit()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this for initialization logic.

Overrides:
onInit in class IntegrationObjectSupport

determineTargetChannels

protected java.util.Collection<MessageChannel> determineTargetChannels(Message<?> message)
Description copied from class: AbstractMessageRouter
Subclasses must implement this method to return a Collection of zero or more MessageChannels to which the given Message should be routed.

Specified by:
determineTargetChannels in class AbstractMessageRouter

Spring Integration