内置的 简单消息代理 处理来自 客户端的订阅请求,将其存储在内存中,并将消息广播给有匹配目的地的连接客户端。代理支持类似路径的目的地,包括对 ant 式目的地模式的订阅。
:::info 应用程序也可以使用点分开的(而不是斜线分开的)目的地。参见 点作为分隔符。 :::
如果配置了一个 任务调度器,简单代理支持 STOMP 心跳。要配置一个调度器,你可以声明你自己的 TaskScheduler Bean,并通过MessageBrokerRegistry 来设置它。或者,你可以使用内置 WebSocket 配置中自动声明的那个,但是,你需要 @Lazy
以避免内置 WebSocket 配置和你的 WebSocketMessageBrokerConfigurer 之间的循环。例如:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private TaskScheduler messageBrokerTaskScheduler;
@Autowired
public void setMessageBrokerTaskScheduler(@Lazy TaskScheduler taskScheduler) {
this.messageBrokerTaskScheduler = taskScheduler;
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/queue/", "/topic/")
.setHeartbeatValue(new long[] {10000, 20000})
.setTaskScheduler(this.messageBrokerTaskScheduler);
// ...
}
}
:::info 心跳的主要作用:测试底层 TCP 连接的健康状况,并确保远程端处于活动状态并且正在运行。 :::