org.springframework.integration.router
Class AbstractMessageRouter

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.AbstractMessageHandler
          extended by org.springframework.integration.router.AbstractMessageRouter
All Implemented Interfaces:
BeanFactoryAware, BeanNameAware, InitializingBean, Ordered, NamedComponent, Orderable, MessageHandler, TrackableComponent
Direct Known Subclasses:
ErrorMessageExceptionTypeRouter, ExpressionEvaluatingRouter, HeaderValueRouter, MethodInvokingRouter, PayloadTypeRouter, RecipientListRouter, XPathRouter

@ManagedResource
public abstract class AbstractMessageRouter
extends AbstractMessageHandler

Base class for all Message Routers.


Field Summary
protected  java.util.Map<java.lang.String,java.lang.String> channelIdentifierMap
           
 
Fields inherited from class org.springframework.integration.handler.AbstractMessageHandler
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
AbstractMessageRouter()
           
 
Method Summary
protected abstract  java.util.List<java.lang.Object> getChannelIdentifiers(Message<?> message)
          Subclasses must implement this method to return the channel identifiers.
 java.lang.String getComponentType()
          Subclasses may implement this method to provide component type information.
protected  MessagingTemplate getMessagingTemplate()
          Provides MessagingTemplate access for subclasses.
protected  ConversionService getRequiredConversionService()
           
protected  void handleMessageInternal(Message<?> message)
           
 void onInit()
          Subclasses may implement this for initialization logic.
 void removeChannelMapping(java.lang.String channelIdentifier)
          Removes channel mapping for a give channel identifier
 void setApplySequence(boolean applySequence)
          Specify whether to apply the sequence number and size headers to the messages prior to sending to the recipient channels.
 void setChannelIdentifierMap(java.util.Map<java.lang.String,java.lang.String> channelIdentifierMap)
          Allows you to set the map which will map channel identifiers to channel names.
 void setChannelMapping(java.lang.String channelIdentifier, java.lang.String channelName)
           
 void setChannelResolver(ChannelResolver channelResolver)
          Specify the ChannelResolver strategy to use.
 void setDefaultOutputChannel(MessageChannel defaultOutputChannel)
          Set the default channel where Messages should be sent if channel resolution fails to return any channels.
 void setIgnoreChannelNameResolutionFailures(boolean ignoreChannelNameResolutionFailures)
          Specify whether this router should ignore any failure to resolve a channel name to an actual MessageChannel instance when delegating to the ChannelResolver strategy.
 void setIgnoreSendFailures(boolean ignoreSendFailures)
          Specify whether send failures for one or more of the recipients should be ignored.
 void setPrefix(java.lang.String prefix)
          Specify a prefix to be added to each channel name prior to resolution.
 void setResolutionRequired(boolean resolutionRequired)
          Set whether this router should always be required to resolve at least one channel.
 void setSuffix(java.lang.String suffix)
          Specify a suffix to be added to each channel name prior to resolution.
 void setTimeout(long timeout)
          Set the timeout for sending a message to the resolved channel.
 
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.integration.context.NamedComponent
getComponentName
 

Field Detail

channelIdentifierMap

protected volatile java.util.Map<java.lang.String,java.lang.String> channelIdentifierMap
Constructor Detail

AbstractMessageRouter

public AbstractMessageRouter()
Method Detail

setChannelResolver

public void setChannelResolver(ChannelResolver channelResolver)
Specify the ChannelResolver strategy to use. The default is a BeanFactoryChannelResolver.


setPrefix

public void setPrefix(java.lang.String prefix)
Specify a prefix to be added to each channel name prior to resolution.


setSuffix

public void setSuffix(java.lang.String suffix)
Specify a suffix to be added to each channel name prior to resolution.


setChannelIdentifierMap

public void setChannelIdentifierMap(java.util.Map<java.lang.String,java.lang.String> channelIdentifierMap)
Allows you to set the map which will map channel identifiers to channel names. Channel names will be resolve via ChannelResolver

Parameters:
channelIdentifierMap -

setChannelMapping

@ManagedOperation
public void setChannelMapping(java.lang.String channelIdentifier,
                                               java.lang.String channelName)

removeChannelMapping

@ManagedOperation
public void removeChannelMapping(java.lang.String channelIdentifier)
Removes channel mapping for a give channel identifier

Parameters:
channelIdentifier -

setDefaultOutputChannel

public void setDefaultOutputChannel(MessageChannel defaultOutputChannel)
Set the default channel where Messages should be sent if channel resolution fails to return any channels. If no default channel is provided, the router will either drop the Message or throw an Exception depending on the value of resolutionRequired.


setTimeout

public void setTimeout(long timeout)
Set the timeout for sending a message to the resolved channel. By default, there is no timeout, meaning the send will block indefinitely.


setResolutionRequired

public void setResolutionRequired(boolean resolutionRequired)
Set whether this router should always be required to resolve at least one channel. The default is 'false'. To trigger an exception whenever the resolver returns null or an empty channel list, and this endpoint has no 'defaultOutputChannel' configured, set this value to 'true'.


setIgnoreChannelNameResolutionFailures

public void setIgnoreChannelNameResolutionFailures(boolean ignoreChannelNameResolutionFailures)
Specify whether this router should ignore any failure to resolve a channel name to an actual MessageChannel instance when delegating to the ChannelResolver strategy.


setIgnoreSendFailures

public void setIgnoreSendFailures(boolean ignoreSendFailures)
Specify whether send failures for one or more of the recipients should be ignored. By default this is false meaning that an Exception will be thrown whenever a send fails. To override this and suppress Exceptions, set the value to true.


setApplySequence

public void setApplySequence(boolean applySequence)
Specify whether to apply the sequence number and size headers to the messages prior to sending to the recipient channels. By default, this value is false meaning that sequence headers will not be applied. If planning to use an Aggregator downstream with the default correlation and completion strategies, you should set this flag to true.


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 AbstractMessageHandler

getMessagingTemplate

protected MessagingTemplate getMessagingTemplate()
Provides MessagingTemplate access for subclasses.


onInit

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

Overrides:
onInit in class IntegrationObjectSupport

getRequiredConversionService

protected ConversionService getRequiredConversionService()

getChannelIdentifiers

protected abstract java.util.List<java.lang.Object> getChannelIdentifiers(Message<?> message)
Subclasses must implement this method to return the channel identifiers.


handleMessageInternal

protected void handleMessageInternal(Message<?> message)
Specified by:
handleMessageInternal in class AbstractMessageHandler