简单代理
内置的简单消息代理处理来自客户的订阅请求,将它们存储在内存中,并向具有匹配目的地的连接客户端广播消息。该代理支持类似路径的目的地,包括对Ant风格目的地模式的订阅。
备注
应用程序也可以使用点分隔(而不是斜杠分隔)的目标地址。请参阅Dots as Separators。
如果配置了任务调度器,简单消息代理(simple broker)支持STOMP心跳机制。要配置调度器,可以自行声明一个TaskScheduler bean并通过MessageBrokerRegistry进行设置。或者,也可以使用内置WebSocket配置中自动声明的调度器,但此时需要使用@Lazy注解来避免内置WebSocket配置与你的WebSocketMessageBrokerConfigurer之间产生循环依赖。例如:
- Java
- Kotlin
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration 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);
// ...
}
}
@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfiguration : WebSocketMessageBrokerConfigurer {
private lateinit var messageBrokerTaskScheduler: TaskScheduler
@Autowired
fun setMessageBrokerTaskScheduler(@Lazy taskScheduler: TaskScheduler) {
this.messageBrokerTaskScheduler = taskScheduler
}
override fun configureMessageBroker(registry: MessageBrokerRegistry) {
registry.enableSimpleBroker("/queue/", "/topic/")
.setHeartbeatValue(longArrayOf(10000, 20000))
.setTaskScheduler(messageBrokerTaskScheduler)
// ...
}
}