在与HornetQ的(基于独立-full.xml配置)在JBoss 7 JMS队列的结构,我注意到的属性“耐用”。
我浏览几个来源,其中许多人表示队列总是“耐用”,意思是消息将始终交付,即使在潜在接收方处于发送的时间不活跃的情况下。
是否在JBoss中7 HornetQ的这一属性是指临时队列? 抑或是这个属性是指某种非暂时性的非持久的队列?
在与HornetQ的(基于独立-full.xml配置)在JBoss 7 JMS队列的结构,我注意到的属性“耐用”。
我浏览几个来源,其中许多人表示队列总是“耐用”,意思是消息将始终交付,即使在潜在接收方处于发送的时间不活跃的情况下。
是否在JBoss中7 HornetQ的这一属性是指临时队列? 抑或是这个属性是指某种非暂时性的非持久的队列?
我觉得这个词“耐用”是更适用于主题比队列。 长期订阅是一个地方,一个用户的出版物由消息提供者时用户没有运行存储。 一旦用户变为活动时,这些存储的消息将被传递给该用户。 对于非持久订阅者将不会收到任何出版物,如果他们不积极。
对于队列,该消息在队列中,直到有人接收或到期。 该消息可以是他们生存的地方消息提供者时丢失消息消息提供者和非持久性下降重启持久的意义。
简短的调查后,我想出了一些结论。 所有意见都是基于JBoss的7.1.1.Final一个HornetQ服务器2.2.13.Final。
非耐久队列不是一个临时队列。 它的存在,直到它的手动删除。
提交非持久队列中的所有消息都消失在JMS提供者重启/故障(交付模式,被忽略提交的消息,即永久性/ NON_PERSISTENT)。
的消息的报头JMSDeliveryMode元素的值不被修改。 特别是,如果该消息与持久传递模式提交给非持久队列中,标志设置为持久的,即使非持久队列不持久的消息(这是失去了在JMS提供者重启/故障的情况下)。
从客户端这似乎是有点令人不安的前景,因为发送者可能不知道是否该消息的宣布交付模式将不被尊重,因为“非耐用”队列的问题意义的方式。
此外,在此背景下,术语“持久的队列”似乎从“持久订阅”脱节,因为它似乎并不影响信息的传递不活跃的消费者以任何方式。
在JMS持久订阅意味着,如果用户断开连接,然后再连接到JMS目标(队列或主题),它会收到迄今已发送到目的地,尚未过期的所有邮件。