Spring集成-在交付后保留消息

Spring集成-在交付后保留消息,spring,messaging,spring-integration,spring-data-mongodb,Spring,Messaging,Spring Integration,Spring Data Mongodb,1我有兴趣了解是否可以保留使用Spring Integration传递的消息。我已经在使用mongo持久存储配置MongodBMessageStore,但集合中只保留失败的消息。理想情况下,我希望所有消息都保留列出它们并重试的功能 我会使用字段状态或类似字段来标识排队、成功或失败的消息。不确定这个字段是否已经存在,但我猜一定有类似的地方 2此外,当消息失败并被分发时,消息中会有更多的数据。这些数据是序列化的,所以我很好奇如何提取原始消息并重试 3目标是在webapp中创建一个界面,在这里可以看到

1我有兴趣了解是否可以保留使用Spring Integration传递的消息。我已经在使用mongo持久存储配置MongodBMessageStore,但集合中只保留失败的消息。理想情况下,我希望所有消息都保留列出它们并重试的功能

我会使用字段状态或类似字段来标识排队、成功或失败的消息。不确定这个字段是否已经存在,但我猜一定有类似的地方

2此外,当消息失败并被分发时,消息中会有更多的数据。这些数据是序列化的,所以我很好奇如何提取原始消息并重试

3目标是在webapp中创建一个界面,在这里可以看到所有排队的消息并重试。不仅是失败的消息,还有对测试有用的成功交付

我到处寻找答案,但找不到


谢谢

我想说,这不是队列组件的好设计

对,它会将失败的消息返回到队列,以便将来重新传递,但好消息应该从队列中删除,以避免在队列的下一次轮询中重复

否,消息上没有状态字段,因为您使用存储作为队列

顺便说一句,Spring集成为队列通道MongoDbChannelMessageStore提供了分离实现

您可以通过单独的并行Mongo收集来实现它,并将消息存储两次:用于队列和将来的分析。在这里,您可以在消息成功与否时引入状态字段并对其进行控制

从这里,您可以引入UI来管理该集合,并提供发送、重试等操作。从此处删除邮件,然后将其再次发送到这两个集合


HTH

听起来是一个可能的解决方案。知道如何重新发送保存的错误消息吗?它们不会自动拾取…您应该区分队列轮询和消息处理。队列中不应保留任何消息。进一步的过程可以确定消息是否正常,并将其标记在该分离集合中。