我使用Spring來設置踐踏服務器端點(擴展AbstractWebSocketMessageBrokerConfigurer)使用的RabbitMQ跺腳適配器在不同的服務器上
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic","/queue")
.setRelayHost(<rmqhost>);
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/myapp/websockets").setAllowedOrigins("*");
}
的目的是,我可以有多個服務器和客戶端將連接到中繼跨訂閱消息對於一個特定的主題它們中的任何一個:/主題/主題的ID-1
任何服務器(一次)可以發送郵件使用Spring的SimpMessagingTemplate
messagingTemplate.convertAndSend(destination, message);
0123這個話題
where destination =「/ topic/topic-id-1」。 例如:我有2個服務器節點和一個客戶端連接到它們中的每一個,訂閱同一主題(/ topic/topic-id-1)。目標是如果服務器1發送topic-id-1的消息,它應該通過rabbitmq中繼給訂閱相同主題的兩個客戶端。我看到一個使用路由鍵創建的隊列爲「topic-id-1」,但只有連接到發送消息的服務器的客戶端明確接收它。我在這裏錯過了什麼嗎?是不是RMQ stomp代理應該通過一臺服務器發送消息來發送訂閱,跨同一主題的所有訂閱?服務器是否需要做其他事情來獲取其他節點發送的消息?