使用JMS关闭持久消费者的最佳方法是什么?

时间:2011-04-29 22:00:48

标签: java jms message-queue activemq

我在JMS主题上有一个持久的消费者。我设置了客户端ID,我可以看到它在队列中列为持久消费者。

当我推出代码时,服务器重新启动但我想在重新启动时将我丢失的消息排队(因此持久)。干净地关闭消息使用者的正确方法是什么,以便您关闭它但仍然知道队列为您缓冲消息

destination = session.createTopic("beacons");
messageConsumer = session.createDurableSubscriber(destination, clientID);

这是正确的方法吗?或者这会告诉队列您在重新连接时不再需要传递消息吗?

messageConsumer.close 

简而言之,我希望能够在不丢失我订阅的主题的消息的情况下重启我的服务,谢谢!

1 个答案:

答案 0 :(得分:3)

AFAIK,close()将关闭该消费者。要删除订阅,您需要从中取消订阅()(Session上的方法)。您应该使用您选择的JMS提供程序对此进行测试,以确保它们按照预期的方式实现JMS规范! :)