Class ExecutorChannel

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

public class ExecutorChannel extends AbstractExecutorChannel
An implementation of MessageChannel that delegates to an instance of UnicastingDispatcher which in turn delegates all dispatching invocations to an Executor.

NOTE: unlike DirectChannel, the ExecutorChannel does not support a shared transactional context between sender and handler, because the Executor typically does not block the sender's Thread since it uses another Thread for the dispatch. (SyncTaskExecutor is an exception but would provide no value for this channel. If synchronous dispatching is required, a DirectChannel should be used instead).

Since:
1.0.3
Author:
Mark Fisher, Gary Russell, Artem Bilan
  • Constructor Details

    • ExecutorChannel

      public ExecutorChannel(Executor executor)
      Create an ExecutorChannel that delegates to the provided Executor when dispatching Messages.

      The Executor must not be null.

      Parameters:
      executor - The executor.
    • ExecutorChannel

      public ExecutorChannel(Executor executor, @Nullable LoadBalancingStrategy loadBalancingStrategy)
      Create an ExecutorChannel with a LoadBalancingStrategy that delegates to the provided Executor when dispatching Messages.

      The Executor must not be null.

      Parameters:
      executor - The executor.
      loadBalancingStrategy - The load balancing strategy implementation.
  • Method Details

    • setFailover

      public 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.
    • setFailoverStrategy

      public void setFailoverStrategy(Predicate<Exception> failoverStrategy)
      Configure a strategy whether the channel's dispatcher should have failover enabled for the exception thrown. Overrides setFailover(boolean) option. In other words: or this, or that option has to be set.
      Parameters:
      failoverStrategy - The failover boolean.
      Since:
      6.3
    • getDispatcher

      protected UnicastingDispatcher getDispatcher()
      Specified by:
      getDispatcher in class AbstractSubscribableChannel
    • onInit

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