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

问题描述 投票:0回答:1

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

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

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

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

messageConsumer.close 

简而言之,我希望能够重新启动我的服务,而不会丢失我订阅的主题中的消息,谢谢!

java jms message-queue
1个回答
4
投票

据我所知,close() 将简单地关闭该消费者。为了删除订阅,您需要取消订阅(Session 上的方法)。但是,您应该使用您选择的 JMS 提供商对此进行测试,以确保他们按照预期的方式实现了 JMS 规范! :)

© www.soinside.com 2019 - 2024. All rights reserved.