public abstract class AbstractBrokerMessageHandler extends java.lang.Object implements MessageHandler, ApplicationEventPublisherAware, SmartLifecycle
MessageHandler that broker messages to
registered subscribers.| Constructor and Description |
|---|
AbstractBrokerMessageHandler(SubscribableChannel inboundChannel,
MessageChannel outboundChannel,
SubscribableChannel brokerChannel)
Constructor with no destination prefixes (matches all destinations).
|
AbstractBrokerMessageHandler(SubscribableChannel inboundChannel,
MessageChannel outboundChannel,
SubscribableChannel brokerChannel,
java.util.Collection<java.lang.String> destinationPrefixes)
Constructor with destination prefixes to match to destinations of messages.
|
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
checkDestinationPrefix(java.lang.String destination) |
ApplicationEventPublisher |
getApplicationEventPublisher() |
SubscribableChannel |
getBrokerChannel() |
SubscribableChannel |
getClientInboundChannel() |
MessageChannel |
getClientOutboundChannel() |
java.util.Collection<java.lang.String> |
getDestinationPrefixes() |
int |
getPhase()
Return the phase value of this object.
|
void |
handleMessage(Message<?> message)
Handle the given message.
|
protected abstract void |
handleMessageInternal(Message<?> message) |
boolean |
isAutoStartup()
Returns
true if this Lifecycle component should get
started automatically by the container at the time that the containing
ApplicationContext gets refreshed. |
boolean |
isBrokerAvailable()
Whether the message broker is currently available and able to process messages.
|
boolean |
isRunning()
Check whether this message handler is currently running.
|
protected void |
publishBrokerAvailableEvent() |
protected void |
publishBrokerUnavailableEvent() |
void |
setApplicationEventPublisher(ApplicationEventPublisher publisher)
Set the ApplicationEventPublisher that this object runs in.
|
void |
setAutoStartup(boolean autoStartup) |
void |
start()
Start this component.
|
protected void |
startInternal() |
void |
stop()
Stop this component, typically in a synchronous fashion, such that the component is
fully stopped upon return of this method.
|
void |
stop(java.lang.Runnable callback)
Indicates that a Lifecycle component must stop if it is currently running.
|
protected void |
stopInternal() |
protected final Log logger
public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel)
inboundChannel - the channel for receiving messages from clients (e.g. WebSocket clients)outboundChannel - the channel for sending messages to clients (e.g. WebSocket clients)brokerChannel - the channel for the application to send messages to the brokerpublic AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, @Nullable java.util.Collection<java.lang.String> destinationPrefixes)
inboundChannel - the channel for receiving messages from clients (e.g. WebSocket clients)outboundChannel - the channel for sending messages to clients (e.g. WebSocket clients)brokerChannel - the channel for the application to send messages to the brokerdestinationPrefixes - prefixes to use to filter out messagespublic SubscribableChannel getClientInboundChannel()
public MessageChannel getClientOutboundChannel()
public SubscribableChannel getBrokerChannel()
public java.util.Collection<java.lang.String> getDestinationPrefixes()
public void setApplicationEventPublisher(@Nullable ApplicationEventPublisher publisher)
ApplicationEventPublisherAwareInvoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.
setApplicationEventPublisher in interface ApplicationEventPublisherAwarepublisher - event publisher to be used by this object@Nullable public ApplicationEventPublisher getApplicationEventPublisher()
public void setAutoStartup(boolean autoStartup)
public boolean isAutoStartup()
SmartLifecycletrue if this Lifecycle component should get
started automatically by the container at the time that the containing
ApplicationContext gets refreshed.
A value of false indicates that the component is intended to
be started through an explicit Lifecycle.start() call instead, analogous
to a plain Lifecycle implementation.
isAutoStartup in interface SmartLifecycleLifecycle.start(),
Phased.getPhase(),
LifecycleProcessor.onRefresh(),
ConfigurableApplicationContext.refresh()public int getPhase()
Phasedpublic void start()
LifecycleShould not throw an exception if the component is already running.
In the case of a container, this will propagate the start signal to all components that apply.
start in interface LifecycleSmartLifecycle.isAutoStartup()protected void startInternal()
public void stop()
LifecycleSmartLifecycle
and its stop(Runnable) variant when asynchronous stop behavior is necessary.
Note that this stop notification is not guaranteed to come before destruction: On
regular shutdown, Lifecycle beans will first receive a stop notification before
the general destruction callbacks are being propagated; however, on hot refresh during a
context's lifetime or on aborted refresh attempts, only destroy methods will be called.
Should not throw an exception if the component isn't started yet.
In the case of a container, this will propagate the stop signal to all components that apply.
stop in interface LifecycleSmartLifecycle.stop(Runnable),
DisposableBean.destroy()protected void stopInternal()
public final void stop(java.lang.Runnable callback)
SmartLifecycleThe provided callback is used by the LifecycleProcessor to support
an ordered, and potentially concurrent, shutdown of all components having a
common shutdown order value. The callback must be executed after
the SmartLifecycle component does indeed stop.
The LifecycleProcessor will call only this variant of the
stop method; i.e. Lifecycle.stop() will not be called for
SmartLifecycle implementations unless explicitly delegated to within
the implementation of this method.
stop in interface SmartLifecycleLifecycle.stop(),
Phased.getPhase()public final boolean isRunning()
Note that even when this message handler is running the
isBrokerAvailable() flag may still independently alternate between
being on and off depending on the concrete sub-class implementation.
public boolean isBrokerAvailable()
Note that this is in addition to the isRunning() flag, which
indicates whether this message handler is running. In other words the message
handler must first be running and then the #isBrokerAvailable() flag
may still independently alternate between being on and off depending on the
concrete sub-class implementation.
Application components may implement
org.springframework.context.ApplicationListener<BrokerAvailabilityEvent>
to receive notifications when broker becomes available and unavailable.
public void handleMessage(Message<?> message)
MessageHandlerhandleMessage in interface MessageHandlermessage - the message to be handledprotected abstract void handleMessageInternal(Message<?> message)
protected boolean checkDestinationPrefix(@Nullable java.lang.String destination)
protected void publishBrokerAvailableEvent()
protected void publishBrokerUnavailableEvent()