Class AbstractDispatcher

java.lang.Object
org.springframework.integration.dispatcher.AbstractDispatcher
All Implemented Interfaces:
MessageDispatcher
Direct Known Subclasses:
BroadcastingDispatcher, PartitionedDispatcher, UnicastingDispatcher

public abstract class AbstractDispatcher extends Object implements MessageDispatcher
Base class for MessageDispatcher implementations.

The subclasses implement the actual dispatching strategy, but this base class manages the registration of MessageHandlers. Although the implemented dispatching strategies may invoke handles in different ways (e.g. round-robin vs. failover), this class does maintain the order of the underlying collection. See the OrderedAwareCopyOnWriteArraySet for more detail.

Author:
Mark Fisher, Iwein Fuld, Oleg Zhurakousky, Gary Russell, Diego Belfer, Artem Bilan, Christian Tzolov
  • Field Details

    • logger

      protected final Log logger
  • Constructor Details

    • AbstractDispatcher

      public AbstractDispatcher()
  • Method Details

    • setMaxSubscribers

      public void setMaxSubscribers(int maxSubscribers)
      Set the maximum subscribers allowed by this dispatcher.
      Parameters:
      maxSubscribers - The maximum number of subscribers allowed.
    • getHandlers

      protected Set<MessageHandler> getHandlers()
      Returns an unmodifiable Set of this dispatcher's handlers. This is provided for access by subclasses.
      Returns:
      The message handlers.
    • addHandler

      public boolean addHandler(MessageHandler handler)
      Add the handler to the internal Set.
      Specified by:
      addHandler in interface MessageDispatcher
      Parameters:
      handler - The handler to add.
      Returns:
      the result of Set.add(Object)
    • removeHandler

      public boolean removeHandler(MessageHandler handler)
      Remove the handler from the internal handler Set.
      Specified by:
      removeHandler in interface MessageDispatcher
      Parameters:
      handler - the handler.
      Returns:
      the result of Set.remove(Object)
    • tryOptimizedDispatch

      protected boolean tryOptimizedDispatch(Message<?> message)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getHandlerCount

      public int getHandlerCount()
      Description copied from interface: MessageDispatcher
      Return the current handler count.
      Specified by:
      getHandlerCount in interface MessageDispatcher
      Returns:
      the handler count.