2012-09-25 74 views

回答

2

是的,只要使用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:
回应的意见,优先顺序如下:

  1. 如果如所述here余辉设为明确管理对象的对象定义,那么它优先。
  2. 如果管理对象设置为PERSISTENCE=APP(默认值),则应用程序的设置优先。
  3. 如果被管理对象和应用都没有明确设置持久性,那么默认情况下是查看队列上的设置并使用该设置。

注意,如果在该消息是首先把队列恰好是一个传输队列,持久性在该点确定,并且与所述消息行进无论它的土地,即使远程目标队列被设置为DEFPSIST(NO)

如果仔细观察第一个项目符号链接的页面,您将注意到可能的持续值为HIGH。对这个价值的描述似乎已经不在本书的范围内(我会报道这一点),但它在this page。这是JMS的“尽力而为”交付模式,属于WMQ的持续模式和非持续模式。由于没有本地等价物,因此WMQ通过在标记为恢复的队列上使用非持久消息来实现此目的。当QMgr启动时,假设关闭和启动正常并且队列文件未被损坏,则队列中的任何非持久性消息都将被保存。即使在使用线性日志记录的QMgr上,也不会记录这些消息以进行介质恢复,因此只有它们的一个副本。所以大多数情况下,这些消息在重新启动后仍然存在,但如果QMgr可以通过删除它们来解决任何情况,它将会。

请注意页面上的警告,表示消息通过的所有队列必须设置为NPMCLASS(HIGH)才能使其工作。我不确定如果邮件在通过网络的方式登陆队列时遇到了什么情况,但您应该将它们视为非永久邮件。

+0

谢谢Rob。至于版本,不,我们使用v7.1。我们将尽快进入v7.5 :) – arrehman

+0

这是JMSDeliveryMode的默认值吗?该值不是由发送消息的客户端设置的。所以,即使队列DEFPSIST为否,这些消息将在QMgr重新启动后仍然存在? – arrehman

+0

查看更新的答案。感谢您的投票!接近那10k大关。 :-) –