首页 > 解决方案 > Spring Websocket:如何更新和反映 MessageBrokerRegistry 对象在运行时的变化?

问题描述

我正在Spring WebsocketActiveMQ. 对于后者退出两个服务器,本地和远程。

当本地服务器启用(远程离线)时,以下工作正常:

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableStompBrokerRelay("/topic", "/queue");                                                               
    config.setApplicationDestinationPrefixes("/app");
    config.setUserDestinationPrefix("/user");
}

当仅启用远程服务器(本地处于脱机状态)时,上面显示的代码将失败,并显示以下内容:

[main] INFO  o.s.m.s.s.StompBrokerRelayMessageHandler - Starting...
[main] INFO  o.s.m.s.s.StompBrokerRelayMessageHandler - Connecting "system" session to 127.0.0.1:61613
...
[tcp-client-loop-nio-4] ERROR o.s.m.s.s.StompBrokerRelayMessageHandler - TCP connection failure in session _system_:
Failed to connect: Connection refused: /127.0.0.1:61613
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /127.0.0.1:61613

解决方案是:

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableStompBrokerRelay("/topic","/queue").setRelayHost("192.168.1.88")
                                                  .setRelayPort(61613);                                                              
    config.setApplicationDestinationPrefixes("/app");
    config.setUserDestinationPrefix("/user");
}

我的问题是:

注意:如果一台服务器关闭而其他远程服务器可用,我已经有了主机端口值。

标签: springspring-websocket

解决方案


推荐阅读