gpt4 book ai didi

spring - 使用 RabbitMQ stomp 适配器跨不同服务器中的订阅中继消息

转载 作者:行者123 更新时间:2023-12-04 02:07:34 24 4
gpt4 key购买 nike

我正在使用 Spring 设置 Stomp 服务器端点(扩展 AbstractWebSocketMessageBrokerConfigurer)

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic","/queue")
.setRelayHost(<rmqhost>);
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/myapp/websockets").setAllowedOrigins("*");
}

目标是我可以拥有多个服务器,客户端将针对特定主题连接到其中任何一个:/topic/topic-id-1

任何服务器(一次)都可以使用 Spring 的 SimpMessagingTemplate 为该主题发送消息

messagingTemplate.convertAndSend(destination, message);

其中目的地 = "/topic/topic-id-1"。例如:我有 2 个服务器节点和一个连接到每个节点的客户端,订阅相同的主题 (/topic/topic-id-1)。目标是如果服务器 1 发送主题 ID-1 的消息,它应该通过 rabbitmq 中继到订阅同一主题的两个客户端。我看到正在创建一个队列,路由键为“topic-id-1”,但只有连接到发送消息的服务器的客户端才会明确接收它。我在这里错过了什么吗? RMQ stomp broker 不应该在同一主题的所有订阅中中继一台服务器为订阅发送的消息吗?服务器是否需要做其他事情来获取其他节点发送的消息?

最佳答案

我遇到了同样的问题。经过一整天的探索,我终于找到了解决方案!不过它很容易配置。

registry.enableStompBrokerRelay("/topic/", "/queue/", "/exchange/") 
.setUserDestinationBroadcast("/topic/log-unresolved-user")
.setUserRegistryBroadcast("/topic/log-user-registry")

您唯一需要做的就是在启用 StompBrokerRelay 时配置 setUserDestinationBroadcastsetUserRegistryBroadcast。并且有效!

我从 here 找到了解决方案.认为那个家伙!

关于spring - 使用 RabbitMQ stomp 适配器跨不同服务器中的订阅中继消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com