Class PartitionedChannel

All Implemented Interfaces:
Aware, BeanFactoryAware, BeanNameAware, DisposableBean, InitializingBean, ApplicationContextAware, ExecutorChannelInterceptorAware, ComponentSourceAware, ExpressionCapable, IntegrationPattern, NamedComponent, IntegrationManagement, SubscribableChannelManagement, TrackableComponent, MessageChannel, SubscribableChannel, InterceptableChannel

public class PartitionedChannel extends AbstractExecutorChannel
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:
  • Constructor Details

    • PartitionedChannel

      public PartitionedChannel(int partitionCount)
      Instantiate based on a provided number of partitions and function resolving a partition key from the IntegrationMessageHeaderAccessor.CORRELATION_ID message header.
      Parameters:
      partitionCount - the number of partitions in this channel. sent to this channel.
    • PartitionedChannel

      public PartitionedChannel(int partitionCount, Function<Message<?>,Object> partitionKeyFunction)
      Instantiate 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