@ -38645,11 +38645,10 @@ for purging inactive destinations.
@@ -38645,11 +38645,10 @@ for purging inactive destinations.
[[websocket-stomp-appplication-context-events]]
==== Broker events and message interception
==== Listening To ApplicationContext Events and Intercepting Messages
The STOMP messaging support publishes the `ApplicationContext` events listed below.
To subscribe to receive one or more of these events a Spring managed component can
implement Spring's `ApplicationListener` interface. The events are:
Several `ApplicationContext` events (listed below) are published and can be
received by implementing Spring's `ApplicationListener` interface.
* `BrokerAvailabilityEvent` -- indicates when the broker becomes available/unavailable.
While the "simple" broker becomes available immediately on startup and remains so while
@ -38686,82 +38685,43 @@ will typically notice the broker is not responding within 10 seconds. Clients ne
@@ -38686,82 +38685,43 @@ will typically notice the broker is not responding within 10 seconds. Clients ne
implement their own reconnect logic.
====
An application can also intercept all incoming or outgoing messages by creating a
`ChannelInterceptor` and registering it on the inbound or outbound channel. See bellow
an example that filters messages based on the message destination and user:
Furthermore, an application can directly intercept every incoming and outgoing message by
registering a `ChannelInterceptor` on the respective message channel. For example
to intercept inbound messages:
[source,java,indent=0]
[subs="verbatim,quotes"]
----
public class AccessControlChannelInterceptor extends ChannelInterceptorAdapter {
@Configuration
@EnableWebSocketMessageBroker
public class WebsocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
Principal user = SimpMessageHeaderAccessor.getUser(message.getHeaders());