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