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