簡單訊息代理器

內建的簡單訊息代理器處理來自用戶端的訂閱請求、將其儲存在記憶體中,並將訊息廣播到具有相符目的地的連線用戶端。代理器支援類似路徑的目的地,包括訂閱 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)

		// ...
	}
}