【发布时间】:2015-02-03 14:03:28
【问题描述】:
我还在学习这个 activemq 和 jms 的东西。
我已经尝试了一些示例,现在我可以从队列/主题中生成和使用消息。
现在我有一个问题,当我的客户/消费者失去连接时,队列/主题中的消息仍然发送该消息,该消息丢失并且不保留在队列/主题中。所以我的问题是如何保留该失败的消息以及如何让代理重新发送该消息?
谢谢
【问题讨论】:
我还在学习这个 activemq 和 jms 的东西。
我已经尝试了一些示例,现在我可以从队列/主题中生成和使用消息。
现在我有一个问题,当我的客户/消费者失去连接时,队列/主题中的消息仍然发送该消息,该消息丢失并且不保留在队列/主题中。所以我的问题是如何保留该失败的消息以及如何让代理重新发送该消息?
谢谢
【问题讨论】:
你有点混淆了术语。
队列将保留消息直到被使用或代理重新启动,除非消息已被标记为持久,在这种情况下,即使在代理重新启动后它们也会保留。
主题仅将当前消息传递给任何当前订阅者。但是,您可以使用多种方法来持久化发布到主题的消息:
出于多种原因,虚拟主题往往比持久订阅者更受欢迎,但这实际上取决于用例。
如何创建持久订阅者取决于您用于创建订阅者的内容(Spring、POJO 还是其他 API?)。所有方法都会在某个时候调用Session.createDurableSubscriber 方法,但我建议在选择虚拟主题或复合队列之前阅读它们的行为方式。
【讨论】:
你要找的东西可能是Durable subscription
您可以在http://activemq.apache.org/how-do-durable-queues-and-topics-work.html找到相同的文档
【讨论】: