如果侦听器关闭,持久性 JMS 消息如何存活
Posted
技术标签:
【中文标题】如果侦听器关闭,持久性 JMS 消息如何存活【英文标题】:How can persistent JMS message survive if listener shut down 【发布时间】:2019-01-04 07:38:38 【问题描述】:我有一个主题,我在主题上发布了一条消息注释:我停止了所有 JMS 队列侦听器。 现在我现在重新启动服务器并打开监听器,我期待系统使用我之前发布的消息。但事实并非如此。
我已阅读 JBOSS 的文档 - hornetq 它说所有 JMS 消息本质上都是持久的。我如何证明消息本质上是持久的?消息应该在第二次运行中被消费;因为消息会在消息队列的某个持久数据库中。
http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html
文档说持久 JMS 消息可以在代理重启后幸存下来,我的问题是指持久 JMS 消息可以在侦听器重启后幸存下来,如果不能,我该如何实现?
【问题讨论】:
【参考方案1】:我认为您只是在体验 JMS 主题的正常语义。这里有几点需要牢记:
-
发送到某个主题的任何消息都放置在该主题的匹配订阅中。如果该主题没有匹配的订阅,则该消息将被丢弃。
默认情况下,主题订阅不是持久的,当订阅者断开连接时,非持久订阅中的任何消息都会被丢弃。
为了使发送到主题的消息在代理重新启动后仍然存在,订阅必须是持久的并且消息必须是持久的。
【讨论】:
以上是关于如果侦听器关闭,持久性 JMS 消息如何存活的主要内容,如果未能解决你的问题,请参考以下文章