spring - Spring Websocket:如何更新和反映 MessageBrokerRegistry 对象在运行时的变化?
问题描述
我正在Spring Websocket
与ActiveMQ
. 对于后者退出两个服务器,本地和远程。
当本地服务器启用(远程离线)时,以下工作正常:
@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");
}
我的问题是:
- 如何在运行时通过和方法更新
MessageBrokerRegistry
对象并反映这些更改?但它通过API中的可用方法。setRelayHost
setRelayPort
@Configuration
Spring Framework
注意:如果一台服务器关闭而其他远程服务器可用,我已经有了新的主机和端口值。
解决方案
推荐阅读
- actionscript-3 - 视频监听器不会自动返回菜单
- ios - 只有当 iPhone 连接到系统(任何操作系统:Windows、Mac 或 Ubuntu)时才会执行后台任务,否则不会执行
- javascript - 正则表达式:将 HTML 转换为 JSON 格式
- docker - docker gulp build 使用 nginx 失败
- php - GSSAPI-Auth 与 PHP 到 MariaDB (Windows)
- python - Python:迭代一个由类中的多个方法共享的列表
- reactjs - 使用“即发即弃”API 分配专用于实体创建的 Redux 状态是否是一种好习惯?
- visual-studio - 是否可以安装 VC 工具集 14.10 版?
- sql-server - 从 SQL Server 2016 中的 STRING_SPLIT 的位置返回值
- django - 在基于函数的视图中访问模型。