我有一个维护应用程序全局状态的服务器。
客户端可以连接到服务器并获取有关全局状态更改的消息(发布/订阅机制以便服务器广播信息)。
然而,在启动时,客户端根本没有关于全局状态的信息,他们需要它。我想要的是对于订阅系统的任何新客户端,第一条通知消息是应用程序的完整状态。然后他们只收到有关此状态的更改:
- 客户端连接到消息传递系统
- 它订阅消息系统
- 它收到的第一条消息是系统的完整状态
- 然后,它只接收有关全局状态的更改
这个想法类似于多人游戏,新玩家必须首先获得游戏的完整状态,然后只发送游戏中的变化。
像 ActiveMQ 或 Stomp 这样的消息传递系统可以满足我的需求,因为它们是多语言的,并且可以与多个传输层一起使用。但是,没有发送完整状态的概念(或以连贯的方式累积最后的更改)。
当然,我可以轻松地以静态方式提供此状态(首先我获得完整状态,然后订阅发布/订阅系统),但是我必须注意同时可能发生的变化(我是否丢失了一些变化在处理完整状态时?在我刚刚检索到的全局状态中是否已经考虑到了这种变化?...)。但是,我失去了 Stomp 和 ActiveMQ 已经提供的多语言/多传输方面。
是否有一些现有的库/工具可以做到这一点?ActiveMQ 的某种扩展?类似于 Stomp 的东西?还是需要手工制作?