【发布时间】:2021-06-04 11:46:06
【问题描述】:
我正在尝试为我们现有的基础架构的客户端-客户端-通信创建一个合理的设置。我已经阅读 Spring、Websocket、STOMP、SockJS 和 ActiveMQ 的文档一个多星期了,但我不确定我正在尝试做的事情是否可行或明智。 Spring 服务器和 JavaScript 客户端启动并运行得相对较快,并且在客户端之间发送消息正常工作(从 JS 客户端直接连接到 Spring 服务器)。这种设置不足以满足我们的需求,因此我们决定在两者之间放置专门的经纪人。配置 ActiveMQ 可能是一场噩梦,因为我真的不知道从哪里开始。到目前为止,我还没有与专门的经纪人合作过。
环境
- 170 个独立服务器(Tomcat、Spring、SockJS、STOMP)
- 2 ActiveMQ (Artemis) 代理(负载平衡、故障安全)
- 几千个客户端(JavaScript/.NET、SockJS、STOMP)
要求
我需要每个客户都能与其他客户交谈。每条消息都必须由其中一台服务器进行管理。我希望客户端连接到 ActiveMQ 代理之一。 ActiveMQ 代理将保持到每个服务器的单个连接。关键是要避免我的所有客户端都必须打开到所有服务器的 170 个 WebSocket 连接。服务器不需要相互交谈(但/必要),因为它们是独立的,具有不同的职责。
问题
ActiveMQ 或任何其他专用代理是否可以作为透明代理/中继,即它可以处理这种情况吗?有没有办法动态确定正确的接收者,或者我应该走另一条路线,比如滚动我自己的基于 Spring 的中继?
【问题讨论】:
-
我试图重新表述这个问题。也许这更好。我只需要一个起点。
标签: spring-websocket stomp activemq-artemis sockjs