Class PublishSubscribeChannel

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

public class PublishSubscribeChannel extends AbstractExecutorChannel implements BroadcastCapableChannel
A channel that sends Messages to each of its subscribers.
Author:
Mark Fisher, Oleg Zhurakousky, Gary Russell, Artem Bilan, Trung Pham
  • Constructor Details

    • PublishSubscribeChannel

      public PublishSubscribeChannel()
      Create a PublishSubscribeChannel that will invoke the handlers in the message sender's thread.
    • PublishSubscribeChannel

      public PublishSubscribeChannel(boolean requireSubscribers)
      Create a PublishSubscribeChannel that will invoke the handlers in the message sender's thread considering the provided requireSubscribers flag.
      Parameters:
      requireSubscribers - if set to true, the sent message is considered as non-dispatched and rejected to the caller with the "Dispatcher has no subscribers".
      Since:
      5.4.3
    • PublishSubscribeChannel

      public PublishSubscribeChannel(@Nullable Executor executor)
      Create a PublishSubscribeChannel that will use an Executor to invoke the handlers. If this is null, each invocation will occur in the message sender's thread.
      Parameters:
      executor - The executor.
    • PublishSubscribeChannel

      public PublishSubscribeChannel(@Nullable Executor executor, boolean requireSubscribers)
      Create a PublishSubscribeChannel that will use an Executor to invoke the handlers. If this is null, each invocation will occur in the message sender's thread.
      Parameters:
      executor - The executor.
      requireSubscribers - if set to true, the sent message is considered as non-dispatched and rejected to the caller with the "Dispatcher has no subscribers".
      Since:
      5.4.3
  • Method Details

    • getComponentType

      public String getComponentType()
      Description copied from class: IntegrationObjectSupport
      Subclasses may implement this method to provide component type information.
      Specified by:
      getComponentType in interface NamedComponent
      Overrides:
      getComponentType in class AbstractMessageChannel
    • getIntegrationPatternType

      public IntegrationPatternType getIntegrationPatternType()
      Description copied from interface: IntegrationPattern
      Return a pattern type this component implements.
      Specified by:
      getIntegrationPatternType in interface IntegrationPattern
      Overrides:
      getIntegrationPatternType in class AbstractExecutorChannel
      Returns:
      the IntegrationPatternType this component implements.
    • setErrorHandler

      public void setErrorHandler(ErrorHandler errorHandler)
      Provide an ErrorHandler strategy for handling Exceptions that occur downstream from this channel. This will only be applied if an Executor has been configured to dispatch the Messages for this channel. Otherwise, Exceptions will be thrown directly within the sending Thread. If no ErrorHandler is provided, and this channel does delegate its dispatching to an Executor, the default strategy is a MessagePublishingErrorHandler that sends error messages to the failed request Message's error channel header if available or to the default 'errorChannel' otherwise.
      Parameters:
      errorHandler - The error handler.
      See Also:
    • setIgnoreFailures

      public void setIgnoreFailures(boolean ignoreFailures)
      Specify whether failures for one or more of the handlers should be ignored. By default, this is false meaning that an Exception will be thrown whenever a handler fails. To override this and suppress Exceptions, set the value to true.
      Parameters:
      ignoreFailures - true if failures should be ignored.
    • setApplySequence

      public void setApplySequence(boolean applySequence)
      Specify whether to apply the sequence number and size headers to the messages prior to invoking the subscribed handlers. By default, this value is false meaning that sequence headers will not be applied. If planning to use an Aggregator downstream with the default correlation and completion strategies, you should set this flag to true.
      Parameters:
      applySequence - true if the sequence information should be applied.
    • setMinSubscribers

      public void setMinSubscribers(int minSubscribers)
      If at least this number of subscribers receive the message, AbstractMessageChannel.send(org.springframework.messaging.Message) will return true. Default: 0.
      Parameters:
      minSubscribers - The minimum number of subscribers.
    • onInit

      public final void onInit()
      Callback method for initialization.
      Overrides:
      onInit in class AbstractMessageChannel
    • getDispatcher

      protected BroadcastingDispatcher getDispatcher()
      Specified by:
      getDispatcher in class AbstractSubscribableChannel