2014-12-05 136 views
1


我仍然在学习这个activemq和jms的东西。 我已经尝试过一些例子,现在我可以产生和使用来自队列/主题的消息。

现在我有一个问题,当我的客户端/客户端丢失连接时,队列/主题中的消息仍然发出该消息,该消息将丢失并且不保留在队列/主题中。所以我的问题是我如何能够保留这个失败的消息,以及如何让代理重新发送该消息?

感谢ActiveMQ如何保持未能发送给消费者队列/主题的消息?

回答

3

您术语混合了一点事情。

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

主题只将当前消息传递给任何当前订阅者。但是,您可以使用几种方法持久发布到主题的邮件:

  1. 持久订阅者。
  2. Virtual Destinations

虚拟主题通常比持久订阅者更受欢迎,但它实际上取决于用例。

你如何创建一个持久订阅者取决于你用来创建订阅者(Spring,POJO,一些其他的API?)。所有的方法都会在某个时候调用Session.createDurableSubscriber方法,但我建议阅读它们在通过虚拟主题或复合队列选择之前的行为方式。

+0

谢谢。那么,我怎样才能让诸如从经纪人到消费者的“保证交货”? – 2014-12-09 16:36:32

+0

确保它是作为持久性消息生成的。此外,你会想看看某种形式的客户端确认或交易。 – 2014-12-17 14:26:44

相关问题