ActiveMQ如何保留无法在队列/主题上发送给消费者的消息?

时间:2014-12-05 11:47:12

标签: jms activemq


我还在学习这个activemq和jms的东西。 我已经尝试了一些示例,现在我可以从队列/主题中生成和使用消息。

现在我遇到了一个问题,当我的客户端/消费者丢失连接时,队列/主题中的消息仍然发送该消息,该消息丢失而不保留在队列/主题中。所以我的问题是如何保留失败的消息以及如何让代理再次重发该消息?

感谢

2 个答案:

答案 0 :(得分:5)

你正在混淆术语。

队列将保留消息,直到消耗或重新启动代理,除非消息已被标记为持久消息,在这种情况下,即使在代理重新启动后它们也会保留。

主题仅将当前消息传递给任何当前订阅者。但是,您可以使用多种方法来保留发布到主题的消息:

  1. 耐用用户。
  2. Virtual Destinations
  3. 虚拟主题因持久订阅者而受欢迎的原因很多,但它实际上取决于用例。

    如何创建持久订阅者取决于您用于创建订阅者的内容(Spring,POJO,其他一些API?)。所有方法都会在某些时候调用Session.createDurableSubscriber方法,但我建议在通过Virtual Topic或Composite Queues选择它之前了解它们的行为方式。

答案 1 :(得分:0)

您正在寻找的东西可能是Durable subscription

您可以在http://activemq.apache.org/how-do-durable-queues-and-topics-work.html

找到相同的文档