【发布时间】:2015-03-30 09:45:42
【问题描述】:
我有一个使用 Spring Framework/Spring Boot/Spring Messaging/Websockets 的应用程序,并将将其部署到 Elastic Beanstalk。您可以将应用程序视为聊天应用程序(它实际上确实具有聊天功能)
场景
这是一个示例场景:
Client A <-> Server A
Client B <-> Server B
Client C <-> Server B
现在,如果 Client A 使用 spring 消息传递一条消息,如果我将该消息发送到所有连接的客户端,则只有 Client A 会看到它,因为只有 Client A 连接到 Server A,同样如果 @ 987654327@ 会看到,只有Clients B and C 会看到,Client A 不会看到。
所以这给我留下了一个问题,我有哪些选择。
可能的解决方案
如果可能,我想使用亚马逊服务,因为我已经在他们的云平台上。
我考虑过使用 Amazon SQS,让每台服务器订阅同一个队列,然后通过它发送所有通知,但我相信所有使用 SQS 的请求都是活动的,所以我必须进行轮询,并且会创建一个显着的延迟。
有谁知道解决这个问题的好方法吗?我可以设置一个服务器来处理所有网络套接字,但这不是最佳的。
提前致谢!
【问题讨论】:
-
我也在考虑使用 Firebase 之类的东西,只要延迟不错。
-
您希望
Server A和Server B在同一个实例上运行吗?还是您希望它们彼此完全分开运行? -
它们是自动缩放的,因此它们是在负载高时创建的独立服务器,并在负载低时自动删除。
-
当 Dynamo 在特定频道收到新消息时,为什么不使用 Dynamo 并与 SNS 集成?
标签: spring amazon-web-services spring-boot amazon-sqs amazon-elastic-beanstalk