|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
事件
多个 ApplicationContext 事件会被发布,并可以通过实现 Spring 的 ApplicationListener 接口来接收:
-
BrokerAvailabilityEvent: 表示代理何时可用或不可用。 当“简单”代理在启动时立即可用并在应用程序运行期间保持可用时,STOMP“代理中继”可能会失去与完整功能代理的连接(例如,如果代理重新启动)。代理中继具有重新连接逻辑,并在代理恢复时重新建立“系统”连接。因此,每当状态从已连接变为断开或反之,都会发布此事件。使用SimpMessagingTemplate的组件应订阅此事件,并在代理不可用时避免发送消息。无论如何,它们应准备好在发送消息时处理MessageDeliveryException。 -
SessionConnectEvent: 当接收到新的 STOMP CONNECT 时发布,表示新客户端会话的开始。该事件包含表示连接的消息,包括会话 ID、用户信息(如果有)以及客户端发送的任何自定义标头。这对于跟踪客户端会话很有用。订阅此事件的组件可以使用SimpMessageHeaderAccessor或StompMessageHeaderAccessor包装其中的消息。 -
SessionConnectedEvent: 在代理发送了对 CONNECT 的 STOMP CONNECTED 帧响应后不久发布。此时,STOMP 会话可以被视为已完全建立。 -
SessionSubscribeEvent: 在接收到新的 STOMP SUBSCRIBE 时发布。 -
SessionUnsubscribeEvent: 在接收到新的 STOMP UNSUBSCRIBE 时触发。 -
SessionDisconnectEvent: 当STOMP会话结束时发布。DISCONNECT可能由客户端发送,也可能在WebSocket会话关闭时自动生成。在某些情况下,每个会话可能会多次发布此事件。组件应针对多个断开事件具有幂等性。
| 当使用功能齐全的消息代理时,如果消息代理暂时不可用,STOMP“消息代理中继”会自动重新连接“系统”连接。但是,客户端连接不会自动重新连接。假设启用了心跳机制,客户端通常会在10秒内发现消息代理无响应。客户端需要实现自己的重新连接逻辑。 |