Class UnicastingDispatcher

java.lang.Object
org.springframework.integration.dispatcher.AbstractDispatcher
org.springframework.integration.dispatcher.UnicastingDispatcher
All Implemented Interfaces:
MessageDispatcher

public class UnicastingDispatcher extends AbstractDispatcher
Implementation of MessageDispatcher that will attempt to send a Message to at most one of its handlers. The handlers will be tried as determined by the LoadBalancingStrategy if one is configured. As soon as one of the handlers accepts the Message, the dispatcher will return true and ignore the rest of its handlers.

If the dispatcher has no handlers, a MessageDispatchingException will be thrown. If all handlers throw Exceptions, the dispatcher will throw an AggregateMessageDeliveryException.

A load-balancing strategy may be provided to this class to control the order in which the handlers will be tried.

Since:
1.0.2
Author:
Iwein Fuld, Mark Fisher, Gary Russell, Oleg Zhurakousky, Artem Bilan
  • Constructor Details

    • UnicastingDispatcher

      public UnicastingDispatcher()
    • UnicastingDispatcher

      public UnicastingDispatcher(@Nullable Executor executor)
  • Method Details

    • setFailover

      public void setFailover(boolean failover)
      Specify whether this dispatcher should failover when a single MessageHandler throws an Exception. The default value is true. Overrides setFailoverStrategy(Predicate) option. In other words: or this, or that option has to be set.
      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
    • setLoadBalancingStrategy

      public void setLoadBalancingStrategy(@Nullable LoadBalancingStrategy loadBalancingStrategy)
      Provide a LoadBalancingStrategy for this dispatcher.
      Parameters:
      loadBalancingStrategy - The load balancing strategy implementation.
    • setMessageHandlingTaskDecorator

      public void setMessageHandlingTaskDecorator(MessageHandlingTaskDecorator messageHandlingTaskDecorator)
    • dispatch

      public final boolean dispatch(Message<?> message)
      Description copied from interface: MessageDispatcher
      Dispatch the message.
      Parameters:
      message - the message.
      Returns:
      true if dispatched.