【问题标题】:Spring websockets + Amazon MQ limitationsSpring websockets + Amazon MQ 限制
【发布时间】:2022-03-09 21:00:41
【问题描述】:

我们想使用 spring websockets + STOMP + amazon MQ 作为一个全功能的消息代理。我们试图进行基准测试,以找出单个 tomcat 节点可以处理多少个客户端 websocket 连接。但似乎我们首先达到了 amazonMQ 连接限制。根据aws documentation,amazonMQ 每个节点的连接限制为 1000 个(据我了解,我们可以要求支持来增加限制,但我怀疑它是否可以大幅增加)。所以我的问题是:

1) 我是否正确假设对于从客户端到 spring/tomcat 服务器的每个 websocket 连接,从服务器到代理打开相应的连接?这是正确的行为还是我们在这里做错了什么/遗漏了什么?

2) 在这里可以做什么?我的意思是我认为每 1000 个用户创建代理节点不是一个好主意..

【问题讨论】:

    标签: spring spring-boot activemq spring-websocket amazon-mq


    【解决方案1】:

    根据https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.html,您所做的一切都是正确的,这是记录在案的行为。

    引用自 javadoc:

    对于每条新的 CONNECT 消息,都会打开一个到代理的独立 TCP 连接,并专门用于来自发起 CONNECT 消息的客户端的所有消息。来自同一客户端的消息通过会话 id 消息头标识。相反,当 STOMP 代理在 TCP 连接上发回消息时,这些消息会使用客户端的会话 id 进行丰富,并通过提供给构造函数的 MessageChannel 发送回下游。

    至于修复,您可以编写自己的消息代理中继,使用 tcp 连接池。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2020-11-16
      相关资源
      最近更新 更多