Class PartitionedChannel
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.channel.AbstractMessageChannel
org.springframework.integration.channel.AbstractSubscribableChannel
org.springframework.integration.channel.AbstractExecutorChannel
org.springframework.integration.channel.PartitionedChannel
- All Implemented Interfaces:
- Aware,- BeanFactoryAware,- BeanNameAware,- DisposableBean,- InitializingBean,- ApplicationContextAware,- ExecutorChannelInterceptorAware,- ComponentSourceAware,- ExpressionCapable,- IntegrationPattern,- NamedComponent,- IntegrationManagement,- SubscribableChannelManagement,- TrackableComponent,- MessageChannel,- SubscribableChannel,- InterceptableChannel
An 
AbstractExecutorChannel implementation for partitioned message dispatching.
 Requires a number of partitions where each of them is backed by a dedicated thread.
 The partitionKeyFunction is used to determine to which partition the message
 has to be dispatched.
 By default, the IntegrationMessageHeaderAccessor.CORRELATION_ID message header is used
 for partition key.
 
 The actual dispatching and threading logic is implemented in the PartitionedDispatcher.
 
 The default ThreadFactory is based on the bean name of this channel plus -partition-thread-.
 Thus, every thread name will reflect a partition it belongs to.
 
 The rest of the logic is similar to the ExecutorChannel, which includes:
 - load balancing for subscribers;
 - fail-over and error handling;
 - channel operations intercepting.
- Since:
- 6.1
- Author:
- Artem Bilan
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.integration.channel.AbstractExecutorChannelAbstractExecutorChannel.MessageHandlingTaskNested classes/interfaces inherited from class org.springframework.integration.channel.AbstractMessageChannelAbstractMessageChannel.ChannelInterceptorListNested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagementIntegrationManagement.ManagementOverrides
- 
Field SummaryFields inherited from class org.springframework.integration.channel.AbstractExecutorChanneldispatcher, executor, executorInterceptorsSize, maxSubscribersFields inherited from class org.springframework.integration.channel.AbstractMessageChannelinterceptors, metersFields inherited from class org.springframework.integration.context.IntegrationObjectSupportEXPRESSION_PARSER, loggerFields inherited from interface org.springframework.integration.support.management.IntegrationManagementMETER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAMEFields inherited from interface org.springframework.messaging.MessageChannelINDEFINITE_TIMEOUT
- 
Constructor SummaryConstructorsConstructorDescriptionPartitionedChannel(int partitionCount) Instantiate based on a provided number of partitions and function resolving a partition key from theIntegrationMessageHeaderAccessor.CORRELATION_IDmessage header.PartitionedChannel(int partitionCount, Function<Message<?>, Object> partitionKeyFunction) Instantiate based on a provided number of partitions and function for partition key against the message.
- 
Method SummaryModifier and TypeMethodDescriptionvoiddestroy()protected PartitionedDispatcherprotected voidonInit()Subclasses may implement this for initialization logic.voidsetFailover(boolean failover) Specify whether the channel's dispatcher should have failover enabled.voidsetFailoverStrategy(Predicate<Exception> failoverStrategy) Configure a strategy whether the channel's dispatcher should have failover enabled for the exception thrown.voidsetLoadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy) Provide aLoadBalancingStrategyfor thePartitionedDispatcher.voidsetThreadFactory(ThreadFactory threadFactory) Set aThreadFactoryfor executors per partitions.Methods inherited from class org.springframework.integration.channel.AbstractExecutorChanneladdInterceptor, addInterceptor, getIntegrationPatternType, hasExecutorInterceptors, removeInterceptor, removeInterceptor, setInterceptors, setMaxSubscribersMethods inherited from class org.springframework.integration.channel.AbstractSubscribableChanneldoSend, getSubscriberCount, subscribe, unsubscribeMethods inherited from class org.springframework.integration.channel.AbstractMessageChannelgetComponentType, getFullChannelName, getIChannelInterceptorList, getInterceptors, getMetricsCaptor, getOverrides, isApplicationRunning, isLoggingEnabled, isObserved, registerMetricsCaptor, registerObservationRegistry, send, send, setDatatypes, setLoggingEnabled, setMessageConverter, setObservationConvention, setShouldTrackMethods inherited from class org.springframework.integration.context.IntegrationObjectSupportafterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toStringMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.integration.support.management.IntegrationManagementgetManagedName, getManagedType, getThisAs, setManagedName, setManagedTypeMethods inherited from interface org.springframework.messaging.support.InterceptableChannelgetInterceptorsMethods inherited from interface org.springframework.messaging.MessageChannelsend, sendMethods inherited from interface org.springframework.integration.support.context.NamedComponentgetBeanName, getComponentName
- 
Constructor Details- 
PartitionedChannelpublic PartitionedChannel(int partitionCount) Instantiate based on a provided number of partitions and function resolving a partition key from theIntegrationMessageHeaderAccessor.CORRELATION_IDmessage header.- Parameters:
- partitionCount- the number of partitions in this channel. sent to this channel.
 
- 
PartitionedChannelInstantiate based on a provided number of partitions and function for partition key against the message.- Parameters:
- partitionCount- the number of partitions in this channel.
- partitionKeyFunction- the function to resolve a partition key against the message sent to this channel.
 
 
- 
- 
Method Details- 
setThreadFactorySet aThreadFactoryfor executors per partitions. Propagated down to thePartitionedDispatcher. Defaults to theCustomizableThreadFactorybased on the bean name of this channel plus-partition-thread-.- Parameters:
- threadFactory- the- ThreadFactoryto use.
 
- 
setFailoverpublic void setFailover(boolean failover) Specify whether the channel's dispatcher should have failover enabled. By default, it will. Set this value to 'false' to disable it.- Parameters:
- failover- The failover boolean.
 
- 
setFailoverStrategyConfigure a strategy whether the channel's dispatcher should have failover enabled for the exception thrown. OverridessetFailover(boolean)option. In other words: or this, or that option has to be set.- Parameters:
- failoverStrategy- The failover boolean.
- Since:
- 6.3
 
- 
setLoadBalancingStrategyProvide aLoadBalancingStrategyfor thePartitionedDispatcher.- Parameters:
- loadBalancingStrategy- The load balancing strategy implementation.
 
- 
getDispatcher- Specified by:
- getDispatcherin class- AbstractSubscribableChannel
 
- 
onInitprotected void onInit()Description copied from class:IntegrationObjectSupportSubclasses may implement this for initialization logic.- Overrides:
- onInitin class- AbstractMessageChannel
 
- 
destroypublic void destroy()- Specified by:
- destroyin interface- DisposableBean
- Specified by:
- destroyin interface- IntegrationManagement
- Overrides:
- destroyin class- AbstractMessageChannel
 
 
-