Spring integration 多Tomcat中spring集成应用程序中的重复消息处理

Spring integration 多Tomcat中spring集成应用程序中的重复消息处理,spring-integration,Spring Integration,我有SpringWeb/集成应用程序。为了在后台运行长时间运行的进程,我使用了MongoDbMessageStore支持的队列,并每隔一秒钟轮询一次队列 我试图从运行在两个tomcat实例上的同一个应用程序向网关发送每个实例1000条消息。我验证了服务器1处理的消息没有被服务器2处理,反之亦然。我看到了存放在mongo收藏中的文件。它有UUID消息id和_group_complete,但我无法得出结论,如果应用程序在多个实例上运行且只有一个momgodb实例,spring如何避免重复的消息处理

我有SpringWeb/集成应用程序。为了在后台运行长时间运行的进程,我使用了MongoDbMessageStore支持的队列,并每隔一秒钟轮询一次队列

我试图从运行在两个tomcat实例上的同一个应用程序向网关发送每个实例1000条消息。我验证了服务器1处理的消息没有被服务器2处理,反之亦然。我看到了存放在mongo收藏中的文件。它有UUID消息id和_group_complete,但我无法得出结论,如果应用程序在多个实例上运行且只有一个momgodb实例,spring如何避免重复的消息处理

感谢您的帮助。

因为MongoDbMessageStore使用findAndRemove操作

这是分布式环境的预期行为


如果你说相反的话,情况会更糟。

谢谢阿尔特姆的及时回复。所以,我不应该担心在多个tomcat实例中重复处理消息吗?您是否可以共享任何描述spring集成中的消息处理的url确保没有重复的消息处理—无论是使用jdbc/mongo还是任何商店—请阅读我们的手册。但老实说,ACID原则不在SI范围之内。这确实是DB的责任。因此,如果多个进程可以对同一个DB记录执行某些操作,那么问题就在于它们。好的,我们应该正确使用DB,并尝试在Framewrok中这样做。正如您在这里看到的,findAndRemove可以避免不同进程的重复。