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
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
Assists with the invocation of the configured channel interceptors. -
Field Summary
Fields inherited from interface org.springframework.messaging.MessageChannel
INDEFINITE_TIMEOUT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addInterceptor
(int index, ChannelInterceptor interceptor) Add a channel interceptor at the specified index.void
addInterceptor
(ChannelInterceptor interceptor) Add a channel interceptor to the end of the list.Return the bean name for this message channel.Return the list of configured interceptors.Return the currently configured Logger.removeInterceptor
(int index) Remove the interceptor at the given index.boolean
removeInterceptor
(ChannelInterceptor interceptor) Remove the given interceptor.final boolean
Send aMessage
to this channel.final boolean
Send a message, blocking until either the message is accepted or the specified timeout period elapses.protected abstract boolean
sendInternal
(Message<?> message, long timeout) void
setBeanName
(String name) A message channel uses the bean name primarily for logging purposes.void
setInterceptors
(List<ChannelInterceptor> interceptors) Set the list of channel interceptors clearing any existing interceptors.void
Set an alternative logger to use than the one based on the class name.toString()
-
Field Details
-
logger
-
-
Constructor Details
-
AbstractMessageChannel
public AbstractMessageChannel()
-
-
Method Details
-
setLogger
Set an alternative logger to use than the one based on the class name.- Parameters:
logger
- the logger to use- Since:
- 5.1
-
getLogger
Return the currently configured Logger.- Since:
- 5.1
-
setBeanName
A message channel uses the bean name primarily for logging purposes.- Specified by:
setBeanName
in 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
Return the bean name for this message channel. -
setInterceptors
Description copied from interface:InterceptableChannel
Set the list of channel interceptors clearing any existing interceptors.- Specified by:
setInterceptors
in interfaceInterceptableChannel
-
addInterceptor
Description copied from interface:InterceptableChannel
Add a channel interceptor to the end of the list.- Specified by:
addInterceptor
in interfaceInterceptableChannel
-
addInterceptor
Description copied from interface:InterceptableChannel
Add a channel interceptor at the specified index.- Specified by:
addInterceptor
in interfaceInterceptableChannel
-
getInterceptors
Description copied from interface:InterceptableChannel
Return the list of configured interceptors.- Specified by:
getInterceptors
in interfaceInterceptableChannel
-
removeInterceptor
Description copied from interface:InterceptableChannel
Remove the given interceptor.- Specified by:
removeInterceptor
in interfaceInterceptableChannel
-
removeInterceptor
Description copied from interface:InterceptableChannel
Remove the interceptor at the given index.- Specified by:
removeInterceptor
in interfaceInterceptableChannel
-
send
Description copied from interface:MessageChannel
Send aMessage
to 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:
send
in interfaceMessageChannel
- Parameters:
message
- the message to send- Returns:
- whether or not the message was sent
-
send
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 interfaceMessageChannel
- Parameters:
message
- the message to sendtimeout
- the timeout in milliseconds orMessageChannel.INDEFINITE_TIMEOUT
- Returns:
true
if the message is sent,false
if not including a timeout of an interrupt of the send
-
sendInternal
-
toString
-