Spring websockets + Amazon MQ限制

3qpi33ja  于 12个月前  发布在  Spring
关注(0)|答案(1)|浏览(127)

我们希望使用Spring WebSockets + STOMP + Amazon MQ作为全功能消息代理。我们试图做基准测试,以确定单个tomcat节点可以处理多少个客户端WebSocket连接。但似乎我们首先达到了Amazon MQ连接限制。根据AWS documentation,Amazon MQ每个节点的连接数限制为1000个(据我所知,我们可以要求支持人员增加这个限制,但我怀疑它是否可以大幅增加)。所以我的问题是
1.我假设对于从客户端到spring/tomcat服务器的每个WebSocket连接,从服务器到broker的相应连接都被打开了,对吗?这是正确的行为还是我们做错了什么/错过了什么?
1.在这里可以做些什么?我的意思是,我不认为这是一个好主意,每1000个用户创建代理节点。

o75abkj4

o75abkj41#

根据https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.html,你做的一切都是正确的,这是有记录的行为。
引用javadoc:
对于每一个新的EQUECT消息,都会打开一个到代理的独立TCP连接,并将其专门用于来自发出EQUECT消息的客户端的所有消息。来自同一客户端的消息通过会话ID消息头来标识。请注意,当STOMP代理在TCP连接上发回消息时,这些消息将使用客户端的会话ID进行丰富,并通过提供给构造函数的MessageChannel向下游发回。
至于修复,你可以编写自己的消息代理中继,使用tcp连接池。

相关问题