我有春季网络/集成应用程序。为了在后台运行长时间运行的进程,我使用了MongoDbMessageStore支持的队列,并每隔一秒轮询一次队列。
我尝试从两个tomcat实例上运行的同一个应用程序向网关发送消息(每个实例1000条消息)。我验证了服务器1处理的消息没有被服务器2处理,反之亦然。我看到了存储在mongo集合中的文档。它有UUID(消息ID)和_group_complete,但我无法断定如果应用程序在一个具有单个momgodb实例的多个实例上运行,spring如何避免重复的消息处理。
感谢您的帮助。
答案 0 :(得分:0)
因为MongoDbMessageStore
使用findAndRemove
操作。
这是分布式环境的预期行为。
如果你说相反的话会更糟。