对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
事件
几个ApplicationContext
事件已发布,并且可以
通过实现 Spring 的ApplicationListener
接口:
-
BrokerAvailabilityEvent
:指示代理何时可用或不可用。 虽然 “simple” broker 在启动时立即可用,并且在 应用程序正在运行,则 STOMP“代理中继”可能会丢失其连接 添加到功能齐全的 Broker 中(例如,如果 Broker 已重新启动)。代理中继 具有 reconnect 逻辑并重新建立与 broker 的 “system” 连接 当它回来时。因此,每当状态从 connected 到 disconnected,反之亦然。使用SimpMessagingTemplate
应该 订阅此事件,并避免在 Broker 不在时发送消息 可用。无论如何,他们都应该准备好处理MessageDeliveryException
发送消息时。 -
SessionConnectEvent
:在收到新的 STOMP CONNECT 时发布 指示新客户端会话的开始。该事件包含表示 connect,包括会话 ID、用户信息(如果有)和客户端的任何自定义标头 送。这对于跟踪客户端会话非常有用。订购的组件 到 this 事件中,可以将包含的消息包装为SimpMessageHeaderAccessor
或StompMessageHeaderAccessor
. -
SessionConnectedEvent
:在SessionConnectEvent
当 broker 已发送 STOMP CONNECTED 帧以响应 CONNECT。此时, STOMP 会话可以认为是完全建立的。 -
SessionSubscribeEvent
:在收到新的 STOMP SUBSCRIBE 时发布。 -
SessionUnsubscribeEvent
:在收到新的 STOMP UNSUBSCRIBE 时发布。 -
SessionDisconnectEvent
:在 STOMP 会话结束时发布。DISCONNECT 可能会 已从客户端发送,或者它可能在 WebSocket 会话已关闭。在某些情况下,此事件会多次发布 每个会话。组件对于多个断开连接事件应该是幂等的。
当您使用功能齐全的代理时,STOMP“代理中继”会自动重新连接 “system” 连接。客户端连接、 但是,不会自动重新连接。假设启用了检测信号,则客户端 通常会注意到 Broker 在 10 秒内没有响应。客户需要 实现自己的 reconnecting logic。 |