Simple Broker

    内置的 简单消息代理 处理来自 客户端的订阅请求,将其存储在内存中,并将消息广播给有匹配目的地的连接客户端。代理支持类似路径的目的地,包括对 ant 式目的地模式的订阅。

    :::info 应用程序也可以使用点分开的(而不是斜线分开的)目的地。参见 点作为分隔符。 :::

    如果配置了一个 任务调度器,简单代理支持 STOMP 心跳。要配置一个调度器,你可以声明你自己的 TaskScheduler Bean,并通过MessageBrokerRegistry 来设置它。或者,你可以使用内置 WebSocket 配置中自动声明的那个,但是,你需要 @Lazy以避免内置 WebSocket 配置和你的 WebSocketMessageBrokerConfigurer 之间的循环。例如:

    1. @Configuration
    2. @EnableWebSocketMessageBroker
    3. public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    4. private TaskScheduler messageBrokerTaskScheduler;
    5. @Autowired
    6. public void setMessageBrokerTaskScheduler(@Lazy TaskScheduler taskScheduler) {
    7. this.messageBrokerTaskScheduler = taskScheduler;
    8. }
    9. @Override
    10. public void configureMessageBroker(MessageBrokerRegistry registry) {
    11. registry.enableSimpleBroker("/queue/", "/topic/")
    12. .setHeartbeatValue(new long[] {10000, 20000})
    13. .setTaskScheduler(this.messageBrokerTaskScheduler);
    14. // ...
    15. }
    16. }

    :::info 心跳的主要作用:测试底层 TCP 连接的健康状况,并确保远程端处于活动状态并且正在运行。 :::