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.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.StringtoString()
Constructor Detail
AbstractMessageChannel
public AbstractMessageChannel()
Method Detail
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)