JMS 持久性和持久性

Joh*_*hnD 3 java jms message-queue

我目前正在阅读JMS一些文章,在阅读了几篇文章之后,我对使用非持久消息的持久订阅有点困惑。让我们从:http : //www2.sys-con.com/itsg/virtualcd/java/archives/0604/chappell/index.html - 它说:

  • 如果非持久消息是为断开连接的持久订阅者准备的,消息服务器会将消息保存到磁盘,就好像它是持久消息一样。在这种情况下,持久消息和非持久消息之间的区别很微妙,但非常重要。对于非持久消息,JMS 提供程序可能会在它有机会代表断开连接的持久订阅者将消息写出到磁盘之前失败。消息可能会丢失

另一个来源:http : //openmessaging.blogspot.com/2009/04/durable-messages-and-persistent.html说的完全不同:

  • 如果此主题上有任何持久订阅,则会将消息的副本发送给那些处于活动状态的持久订阅者。对于那些非活动的持久订阅,消息的副本保存在内存中,并在它们下次变为活动状态时发送给它们。

    如果代理重新启动,此保存的消息将丢失。由于非持久消息未保存在磁盘上,因此代理重启意味着任何尚未收到消息的非活动持久订阅都将错过消息。

那么,真相是什么:)?

rav*_*iru 5

使用 Persistent 消息,broker 会将消息保存到磁盘,但取决于它拥有什么样的订阅者,如果没有持久订阅者,那么在某些实现中,消息一旦传递就会被删除。

在此处输入图片说明