Class AbstractMessageChannel

java.lang.Object
org.springframework.messaging.support.AbstractMessageChannel
All Implemented Interfaces:
Aware, BeanNameAware, MessageChannel, InterceptableChannel
Direct Known Subclasses:
AbstractSubscribableChannel

public abstract class AbstractMessageChannel extends Object implements MessageChannel, InterceptableChannel, BeanNameAware
Abstract base class for MessageChannel implementations.
Since:
4.0
Author:
Rossen Stoyanchev
  • Field Details

    • logger

      protected Log logger
  • Constructor Details

    • AbstractMessageChannel

      public AbstractMessageChannel()
  • Method Details

    • setLogger

      public void setLogger(Log logger)
      Set an alternative logger to use than the one based on the class name.
      Parameters:
      logger - the logger to use
      Since:
      5.1
    • getLogger

      public Log getLogger()
      Return the currently configured Logger.
      Since:
      5.1
    • setBeanName

      public void setBeanName(String name)
      A message channel uses the bean name primarily for logging purposes.
      Specified by:
      setBeanName in interface BeanNameAware
      Parameters:
      name - the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use the BeanFactoryUtils.originalBeanName(String) method to extract the original bean name (without suffix), if desired.
    • getBeanName

      public String getBeanName()
      Return the bean name for this message channel.
    • setInterceptors

      public void setInterceptors(List<ChannelInterceptor> interceptors)
      Description copied from interface: InterceptableChannel
      Set the list of channel interceptors clearing any existing interceptors.
      Specified by:
      setInterceptors in interface InterceptableChannel
    • addInterceptor

      public void addInterceptor(ChannelInterceptor interceptor)
      Description copied from interface: InterceptableChannel
      Add a channel interceptor to the end of the list.
      Specified by:
      addInterceptor in interface InterceptableChannel
    • addInterceptor

      public void addInterceptor(int index, ChannelInterceptor interceptor)
      Description copied from interface: InterceptableChannel
      Add a channel interceptor at the specified index.
      Specified by:
      addInterceptor in interface InterceptableChannel
    • getInterceptors

      public List<ChannelInterceptor> getInterceptors()
      Description copied from interface: InterceptableChannel
      Return the list of configured interceptors.
      Specified by:
      getInterceptors in interface InterceptableChannel
    • removeInterceptor

      public boolean removeInterceptor(ChannelInterceptor interceptor)
      Description copied from interface: InterceptableChannel
      Remove the given interceptor.
      Specified by:
      removeInterceptor in interface InterceptableChannel
    • removeInterceptor

      public ChannelInterceptor removeInterceptor(int index)
      Description copied from interface: InterceptableChannel
      Remove the interceptor at the given index.
      Specified by:
      removeInterceptor in interface InterceptableChannel
    • send

      public final boolean send(Message<?> message)
      Description copied from interface: MessageChannel
      Send a Message to this channel. If the message is sent successfully, the method returns true. If the message cannot be sent due to a non-fatal reason, the method returns false. The method may also throw a RuntimeException in case of non-recoverable errors.

      This method may block indefinitely, depending on the implementation. To provide a maximum wait time, use MessageChannel.send(Message, long).

      Specified by:
      send in interface MessageChannel
      Parameters:
      message - the message to send
      Returns:
      whether the message was sent
    • send

      public final boolean send(Message<?> message, long timeout)
      Description copied from interface: MessageChannel
      Send a message, blocking until either the message is accepted or the specified timeout period elapses.
      Specified by:
      send in interface MessageChannel
      Parameters:
      message - the message to send
      timeout - the timeout in milliseconds or MessageChannel.INDEFINITE_TIMEOUT
      Returns:
      true if the message is sent, false if not including a timeout of an interrupt of the send
    • sendInternal

      protected abstract boolean sendInternal(Message<?> message, long timeout)
    • toString

      public String toString()
      Overrides:
      toString in class Object