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 forMessageChannelimplementations.- Since:
- 4.0
- Author:
- Rossen Stoyanchev
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAbstractMessageChannel.ChannelInterceptorChainAssists with the invocation of the configured channel interceptors.
Field Summary
Fields inherited from interface org.springframework.messaging.MessageChannel
INDEFINITE_TIMEOUT
Constructor Summary
Constructors Constructor Description AbstractMessageChannel()
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddInterceptor(int index, ChannelInterceptor interceptor)Add a channel interceptor at the specified index.voidaddInterceptor(ChannelInterceptor interceptor)Add a channel interceptor to the end of the list.StringgetBeanName()Return the bean name for this message channel.List<ChannelInterceptor>getInterceptors()Return the list of configured interceptors.LoggetLogger()Return the currently configured Logger.ChannelInterceptorremoveInterceptor(int index)Remove the interceptor at the given index.booleanremoveInterceptor(ChannelInterceptor interceptor)Remove the given interceptor.booleansend(Message<?> message)Send aMessageto this channel.booleansend(Message<?> message, long timeout)Send a message, blocking until either the message is accepted or the specified timeout period elapses.protected abstract booleansendInternal(Message<?> message, long timeout)voidsetBeanName(String name)A message channel uses the bean name primarily for logging purposes.voidsetInterceptors(List<ChannelInterceptor> interceptors)Set the list of channel interceptors clearing any existing interceptors.voidsetLogger(Log logger)Set an alternative logger to use than the one based on the class name.StringtoString()
Constructor Detail
AbstractMessageChannel
public AbstractMessageChannel()
Method Detail
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
setBeanName
public void setBeanName(String name)
A message channel uses the bean name primarily for logging purposes.- Specified by:
setBeanNamein interfaceBeanNameAware- 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 theBeanFactoryUtils.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:InterceptableChannelSet the list of channel interceptors clearing any existing interceptors.- Specified by:
setInterceptorsin interfaceInterceptableChannel
addInterceptor
public void addInterceptor(ChannelInterceptor interceptor)
Description copied from interface:InterceptableChannelAdd a channel interceptor to the end of the list.- Specified by:
addInterceptorin interfaceInterceptableChannel
addInterceptor
public void addInterceptor(int index, ChannelInterceptor interceptor)
Description copied from interface:InterceptableChannelAdd a channel interceptor at the specified index.- Specified by:
addInterceptorin interfaceInterceptableChannel
getInterceptors
public List<ChannelInterceptor> getInterceptors()
Description copied from interface:InterceptableChannelReturn the list of configured interceptors.- Specified by:
getInterceptorsin interfaceInterceptableChannel
removeInterceptor
public boolean removeInterceptor(ChannelInterceptor interceptor)
Description copied from interface:InterceptableChannelRemove the given interceptor.- Specified by:
removeInterceptorin interfaceInterceptableChannel
removeInterceptor
public ChannelInterceptor removeInterceptor(int index)
Description copied from interface:InterceptableChannelRemove the interceptor at the given index.- Specified by:
removeInterceptorin interfaceInterceptableChannel
send
public final boolean send(Message<?> message)
Description copied from interface:MessageChannelSend aMessageto this channel. If the message is sent successfully, the method returnstrue. If the message cannot be sent due to a non-fatal reason, the method returnsfalse. 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:
sendin interfaceMessageChannel- Parameters:
message- the message to send- Returns:
- whether or not the message was sent
send
public final boolean send(Message<?> message, long timeout)
Description copied from interface:MessageChannelSend a message, blocking until either the message is accepted or the specified timeout period elapses.- Specified by:
sendin interfaceMessageChannel- Parameters:
message- the message to sendtimeout- the timeout in milliseconds orMessageChannel.INDEFINITE_TIMEOUT- Returns:
trueif the message is sent,falseif not including a timeout of an interrupt of the send
sendInternal
protected abstract boolean sendInternal(Message<?> message, long timeout)