这是WebSphere MQ and Atomikos - Messages Lost on process terminationJMSDeliveryMode和消息持久
在继续讨论的问题是否在JMS fields and properties with corresponding MQMD fields提到JMSDeliveryMode确定MQ消息是持久性与否?
这是WebSphere MQ and Atomikos - Messages Lost on process terminationJMSDeliveryMode和消息持久
在继续讨论的问题是否在JMS fields and properties with corresponding MQMD fields提到JMSDeliveryMode确定MQ消息是持久性与否?
是的,只要使用IBM的JMS类将消息放到那里。这些类将将JMSDeliveryMode
值转换为其中一个WebSphere MQ持久性值。
C程序可能会尝试设置或更改消息属性,以便它们与消息标头不同,并且我不确定WMQ API是否会在该情况下强制执行一致性。
但是,重申第一部分,答案是肯定的。链接的页面描述了JMS属性如何映射到本机WMQ标题,并且JMSDeliveryMode
确实映射到MQMD.Persistence
。
我注意到您的链接到V6.0 Infocenter。希望你在几天内不会继续使用WMQ V6.0。当前的Infocenter主题相同的信息是here,你会发现它被重新组织并阐明了一些观点。我强烈建议至少迁移到V7.1客户端和QMgr,最好是V7.5 - 当然还有相应的Infocenter。
UPDATE:
回应的意见,优先顺序如下:
PERSISTENCE=APP
(默认值),则应用程序的设置优先。注意,如果在该消息是首先把队列恰好是一个传输队列,持久性在该点确定,并且与所述消息行进无论它的土地,即使远程目标队列被设置为DEFPSIST(NO)
。
如果仔细观察第一个项目符号链接的页面,您将注意到可能的持续值为HIGH。对这个价值的描述似乎已经不在本书的范围内(我会报道这一点),但它在this page。这是JMS的“尽力而为”交付模式,属于WMQ的持续模式和非持续模式。由于没有本地等价物,因此WMQ通过在标记为恢复的队列上使用非持久消息来实现此目的。当QMgr启动时,假设关闭和启动正常并且队列文件未被损坏,则队列中的任何非持久性消息都将被保存。即使在使用线性日志记录的QMgr上,也不会记录这些消息以进行介质恢复,因此只有它们的一个副本。所以大多数情况下,这些消息在重新启动后仍然存在,但如果QMgr可以通过删除它们来解决任何情况,它将会。
请注意页面上的警告,表示消息通过的所有队列必须设置为NPMCLASS(HIGH)
才能使其工作。我不确定如果邮件在通过网络的方式登陆队列时遇到了什么情况,但您应该将它们视为非永久邮件。
谢谢Rob。至于版本,不,我们使用v7.1。我们将尽快进入v7.5 :) – arrehman
这是JMSDeliveryMode的默认值吗?该值不是由发送消息的客户端设置的。所以,即使队列DEFPSIST为否,这些消息将在QMgr重新启动后仍然存在? – arrehman
查看更新的答案。感谢您的投票!接近那10k大关。 :-) –