此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cadn.net.cn

事件

几个ApplicationContext事件已发布,并且可以 通过实现 Spring 的ApplicationListener接口:spring-doc.cadn.net.cn

  • BrokerAvailabilityEvent:指示代理何时可用或不可用。 虽然 “simple” broker 在启动时立即可用,并且在 应用程序正在运行,则 STOMP“代理中继”可能会丢失其连接 添加到功能齐全的 Broker 中(例如,如果 Broker 已重新启动)。代理中继 具有 reconnect 逻辑并重新建立与 broker 的 “system” 连接 当它回来时。因此,每当状态从 connected 到 disconnected,反之亦然。使用SimpMessagingTemplate应该 订阅此事件,并避免在 Broker 未发送消息时发送消息 可用。无论如何,他们都应该准备好处理MessageDeliveryException发送消息时。spring-doc.cadn.net.cn

  • SessionConnectEvent:在收到新的 STOMP CONNECT 时发布 指示新客户端会话的开始。该事件包含表示 connect,包括会话 ID、用户信息(如果有)和客户端的任何自定义标头 送。这对于跟踪客户端会话非常有用。订购的组件 到 this 事件中,可以将包含的消息包装为SimpMessageHeaderAccessorStompMessageHeaderAccessor.spring-doc.cadn.net.cn

  • SessionConnectedEvent:在SessionConnectEvent当 broker 已发送 STOMP CONNECTED 帧以响应 CONNECT.此时, STOMP 会话可以认为是完全建立的。spring-doc.cadn.net.cn

  • SessionSubscribeEvent:在收到新的 STOMP SUBSCRIBE 时发布。spring-doc.cadn.net.cn

  • SessionUnsubscribeEvent:在收到新的 STOMP UNSUBSCRIBE 时发布。spring-doc.cadn.net.cn

  • SessionDisconnectEvent:在 STOMP 会话结束时发布。DISCONNECT 可能会 已从客户端发送,或者它可能在 WebSocket 会话已关闭。在某些情况下,此事件会多次发布 每个会话。组件对于多个断开连接事件应该是幂等的。spring-doc.cadn.net.cn

当您使用功能齐全的代理时,STOMP“代理中继”会自动重新连接 “system” 连接。客户端连接、 但是,不会自动重新连接。假设启用了检测信号,则客户端 通常会注意到 Broker 在 10 秒内没有响应。客户需要 实现自己的 reconnecting logic。