2016-03-07 119 views
0

我正在创建通知服务并遇到有问题的流程。 当用户在线时,它接收来自AMQP队列的通知,该队列随后会保存到历史通知数据库中。 当用户登录时,我查询了我在其中保存了所有历史通知的数据库并发送给客户端。通知服务体系结构

我的问题流程是用户登录并查询数据库的同时,正在接收新消息。 这可能会导致重复。

当然,有创造性的解决方案,其中例如使用时间戳来消除重复,但我的问题是这个架构是否正常?如果没有,是否有任何好的文章描述了通知传递给客户端的方式,但通知服务的构建方式是什么?

回答

2

如果您构建消息系统以处理至少一次而不是一次处理,那么您将会更加快乐。做一些谷歌搜索这些,但这是一个相当不错的总结:http://bravenewgeek.com/you-cannot-have-exactly-once-delivery/

在你的客户端,我会保留一个哈希表的“显示的消息”,你可以消除重复的邮件。这可以让你的服务器以至少一次的语义进行发送,并且你在成功时有一个相当不错的选择。