public abstract class AbstractMappingMessageRouter extends AbstractMessageRouter implements MappingMessageRouterManagement
IntegrationManagement.ManagementOverridesEXPRESSION_PARSER, loggerHIGHEST_PRECEDENCE, LOWEST_PRECEDENCEMETER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME| Constructor and Description |
|---|
AbstractMappingMessageRouter() |
| Modifier and Type | Method and Description |
|---|---|
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.
|
protected abstract List<Object> |
getChannelKeys(Message<?> message)
Subclasses must implement this method to return the channel keys.
|
Map<String,String> |
getChannelMappings()
Returns an unmodifiable version of the channel mappings.
|
Collection<String> |
getDynamicChannelNames()
Provide a collection of channel names to which
we have routed messages where the channel was not explicitly mapped.
|
void |
removeChannelMapping(String key)
Remove a channel mapping for the given key if present.
|
void |
replaceChannelMappings(Properties channelMappings)
Convenience method allowing conversion of a list
of mappings in a control-bus message.
|
void |
setChannelKeyFallback(boolean channelKeyFallback)
When true (default), if a resolved channel key does not exist in the channel map,
the key itself is used as the channel name, which we will attempt to resolve to a
channel.
|
void |
setChannelMapping(String key,
String channelName)
Add a channel mapping from the provided key to channel name.
|
void |
setChannelMappings(Map<String,String> channelMappings)
Provide mappings from channel keys to channel names.
|
void |
setDynamicChannelLimit(int dynamicChannelLimit)
Set a limit for how many dynamic channels are retained (for reporting purposes).
|
void |
setPrefix(String prefix)
Specify a prefix to be added to each channel name prior to resolution.
|
void |
setResolutionRequired(boolean resolutionRequired)
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 |
setSuffix(String suffix)
Specify a suffix to be added to each channel name prior to resolution.
|
getComponentType, getDefaultOutputChannel, getIntegrationPatternType, getMessagingTemplate, getRequiredConversionService, handleMessageInternal, onInit, setApplySequence, setDefaultOutputChannel, setDefaultOutputChannelName, setIgnoreSendFailures, setSendTimeouthandleMessage, onComplete, onError, onNext, onSubscribebuildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrackafterPropertiesSet, 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, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetThisAsgetBeanName, getComponentName@ManagedAttribute public void setChannelMappings(Map<String,String> channelMappings)
DestinationResolver.setChannelMappings in interface MappingMessageRouterManagementchannelMappings - The channel mappings.public void setPrefix(String prefix)
prefix - The prefix.public void setSuffix(String suffix)
suffix - The suffix.public void setResolutionRequired(boolean resolutionRequired)
resolutionRequired - true if resolution is required.public void setChannelKeyFallback(boolean channelKeyFallback)
channelKeyFallback - false to disable the fall back.public void setDynamicChannelLimit(int dynamicChannelLimit)
NOTE: this does not affect routing, just the reporting which dynamically
resolved channels have been routed to. Default 100.
dynamicChannelLimit - the limit.getDynamicChannelNames()@ManagedAttribute public Map<String,String> getChannelMappings()
getChannelMappings in interface MappingMessageRouterManagement@ManagedOperation public void setChannelMapping(String key, String channelName)
setChannelMapping in interface MappingMessageRouterManagementkey - The key.channelName - The channel name.@ManagedOperation public void removeChannelMapping(String key)
removeChannelMapping in interface MappingMessageRouterManagementkey - The key.@ManagedAttribute public Collection<String> getDynamicChannelNames()
MappingMessageRouterManagementImplementations may choose to return only the most recent channel names.
getDynamicChannelNames in interface MappingMessageRouterManagementprotected abstract List<Object> getChannelKeys(Message<?> message)
message - The message.protected Collection<MessageChannel> determineTargetChannels(Message<?> message)
AbstractMessageRouterdetermineTargetChannels in class AbstractMessageRoutermessage - The message.@ManagedOperation public void replaceChannelMappings(Properties channelMappings)
This is intended to be called via a control-bus; keys and values that are not Strings will be ignored.
Mappings must be delimited with newlines, for example:
"@'myRouter.handler'.replaceChannelMappings('foo=qux \n baz=bar')".
replaceChannelMappings in interface MappingMessageRouterManagementchannelMappings - The channel mappings.