java - Spring stomp 多应用服务器的配置

标签 java spring websocket cluster-computing stomp

我正在 Spring 4 中使用内置的消息代理和基于 WebSocket 的 STOMP 开发一个实时通知系统。

我想处理存在多应用程序服务器且用户目标未解析(因为用户连接到另一台服务器)的情况。 Spring 文档声称有一个解决方案:

In a multi-application server scenario a user destination may remain unresolved because the user is connected to a different server. In such cases you can configure a destination to broadcast unresolved messages to so that other servers have a chance to try. This can be done through the userDestinationBroadcast property of the MessageBrokerRegistry in Java config and the user-destination-broadcast attribute of the message-broker element in XML.

但是没有这样配置的例子。如何设置服务器以接收这些消息和系统 channel 的身份验证参数?

最佳答案

在处理基于 STOMP 的 WebSockets 的多节点应用程序时,您必须配置和使用外部 STOMP Broker(例如 RabbitMQ),以便不同的应用程序实例可以相互通信。你已经在做了,对吧?

为了配置 userDestinationBroadcastuserRegistryBroadcast 只需为它们分配一个目的地名称。当应用程序启动并在应用程序和代理之间建立系统 TCP 连接时,这些目的地将自动创建,一切都会正常且透明地工作。

我使用 Spring WebSockets、RabbitMQ 等编写了一个网络聊天应用程序,其配置为 available here .

希望对您有所帮助。

关于java - Spring stomp 多应用服务器的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007984/

相关文章:

java - 从没有指定名称的@RequestParam 获取值

java - 我们可以有选择地获取 Hibernate 中关联连接对象的列吗?

node.js - 客户端建立连接时 Socket.io 服务器没有响应

java - 如何在java中设置默认主类?

java - 同一 ArrayList 内的碰撞检测

java - 获取 hibernate 中日期范围内的所有日期值

java - 将 textid 映射到文本

node.js - 测试客户端是否可以使用端口 80、443、843 连接到 WebSockets

node.js - WebSocket通过Amazon ELB或直接通过WebSocket(远程IP问题)

具有许多私有(private)方法的 Java 测试类