簡單代理
內建的簡單訊息代理處理客戶端的訂閱請求,將其儲存在記憶體中,並將訊息廣播到具有匹配目標的連線客戶端。代理支援路徑式目標,包括 Ant 風格目標模式的訂閱。
應用也可以使用點分隔(而不是斜槓分隔)的目標。參見 點作為分隔符。 |
如果配置了任務排程器,簡單代理支援 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)
// ...
}
}