2012-05-23 55 views
1

我正在编写负责群集节点之间通信的Java JMS应用程序。 通过发布\订阅使用主题完成消息传递。 TopicSubscriber通过调用TopicSession.createSubscriber(topic,null,true)来创建,这意味着它不是一个持久订阅者。 现在我正在实现一个“release”方法,它应该取消订阅Subscriber(然后关闭连接等)。我看到TopicSession.unsubscribe(String name)只与持久订阅者有关,所以如何取消订阅非持久订阅者? 是否有必要?我应该取消订阅非持久JMS Topic订户吗?

+0

Shashi是对的。您无需取消订阅任何内容。这就像打开收音机然后关闭。只有在创建非持久订户时才会获取数据,并且在关闭时您不会。 –

回答

2

不,您不需要为非持久订阅发行TopicSession.unsubscribe()。关闭使用者将从JMS提供者中移除订阅。您还可以执行Session.Close()Connection.Close()以从JMS提供程序中删除预订。

在您的Release方法中,只需关闭用户或会话或连接。

取消订阅仅适用于持久订阅。