1)我有兴趣了解是否可以保留使用Spring Integration传递的消息。我已经在使用mongo持久存储(ConfigurableMongoDbMessageStore),但只有失败的消息会保留在集合中。理想情况下,我希望所有消息都保留在列出它们的功能中并重试它们。
我会使用字段“status”或类似字符来识别排队,成功或失败的消息。不确定这个字段是否已经存在,但我猜测必须有类似的东西。
2)此外,当消息失败并持续存在时,消息中会有更多数据。这些数据是序列化的,所以我很好奇如何提取原始邮件并重试它。
3)目标是在webapp中创建一个接口,可以查看并重试所有排队的消息。不仅是失败的消息,还有成功的交付(对测试很有用)。
我到处寻找答案,但找不到。
由于
答案 0 :(得分:0)
我认为这不是queue
组件的好设计。
正确的是,它将失败的消息返回给队列以备将来重新传递,但是应该从队列中删除好的消息,以避免在队列的下一轮询中重复。
不,邮件上没有“status”字段,因为您将store用作队列。
BTW Spring Integration为队列通道提供了separete实现:MongoDbChannelMessageStore
。
您可以使用单独的并行Mongo集合来实现它并将消息存储两次:队列和将来的分析。当消息成功或不成功时,您可以在此处引入“状态”字段并对其进行控制。
从这里,您可以向您介绍用于管理该集合的UI,并提供send
,retry
等操作。从此处删除邮件并将其再次发送到这两个集合。
HTH