JMS持久化订阅

13

请帮助我理解JMS中的持久订阅,我正在浏览这个链接并遇到了以下声明:

http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/advanced.html#1024717

一个持久订阅者使用唯一标识符向 JMS 提供程序注册持久订阅。具有相同标识符的后续订阅者对象将以前一个订阅者离开时的状态恢复订阅。如果持久订阅没有活动的订阅者,则 JMS 提供程序将保留订阅的消息,直到它们被订阅接收或过期为止。 订阅者和持久订阅者是同时存在的两个不同对象吗?请帮我理解这些陈述的含义。
1个回答

33

订阅者(也称为消费者)是创建订阅以从所需主题接收发布(或消息)的应用程序。

有两种类型的订阅者:

非持久订阅者:这种类型的订阅者应用程序将在应用程序运行时从消息提供程序获取发布。一旦应用程序结束,消息提供程序将删除订阅。

持久订阅者:这是第二种类型的应用程序,只要它们正在运行,就会接收发布。当应用程序结束时,消息提供程序将缓存订阅者的发布,并在应用程序回来时交付它们。

保留发布:在创建订阅之前发布的消息将不可用,除非它们是保留发布。即使如此,只有最新的保留发布才可供消费者使用。


这适用于主题和队列吗? - Zeus
5
订阅(Subscription)适用于主题(topic)且可持久或非持久(durable or non-durable)。 - Shashi
@Shashi,那些在创建持久订阅之前发布的消息怎么办? - Wins
@Wins 请查看我在答案中的更新。 - Shashi
@Shashi,"保留发布"是什么意思?你是指使用PERSISTENT模式发布吗? - Wins
请点击此处查看详情:https://www.ibm.com/docs/zh/ibm-mq/9.0?topic=publications-retained - Shashi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接