Spring集成 - 交付后保留消息

时间:2014-07-28 11:37:09

标签: spring messaging spring-integration spring-data-mongodb

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

我会使用字段“status”或类似字符来识别排队,成功或失败的消息。不确定这个字段是否已经存在,但我猜测必须有类似的东西。

2)此外,当消息失败并持续存在时,消息中会有更多数据。这些数据是序列化的,所以我很好奇如何提取原始邮件并重试它。

3)目标是在webapp中创建一个接口,可以查看并重试所有排队的消息。不仅是失败的消息,还有成功的交付(对测试很有用)。

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

由于

1 个答案:

答案 0 :(得分:0)

我认为这不是queue组件的好设计。

正确的是,它将失败的消息返回给队列以备将来重新传递,但是应该从队列中删除好的消息,以避免在队列的下一轮询中重复。

不,邮件上没有“status”字段,因为您将store用作队列。

BTW Spring Integration为队列通道提供了separete实现:MongoDbChannelMessageStore

您可以使用单独的并行Mongo集合来实现它并将消息存储两次:队列和将来的分析。当消息成功或不成功时,您可以在此处引入“状态”字段并对其进行控制。

从这里,您可以向您介绍用于管理该集合的UI,并提供sendretry等操作。从此处删除邮件并将其再次发送到这两个集合。

HTH