【发布时间】:2012-08-03 15:47:02
【问题描述】:
我正在尝试使用 .NET WMQ API 使用 .NET 应用程序通过 WebSphere MQ (WebSphere MQ Server v7) 发送的 JMS 消息。我正在使用 WebSphere MQ Client v7.5 和 amqmdnet.dll 版本 7.5.0.0。
读取JMSDeliveryMode 属性(jms RFH2 文件夹中的Dlv 属性)时出现一些非常奇怪的行为。 JMS 应用程序(WebSphere Application Server v7 中托管的 servlet)发送的属性值设置为 Persistent (2),但我的 .NET 客户端始终读取 1(这意味着 Non_persistent)。我需要读取正确的值,因为我的 .NET 应用程序作为路由器/转发器工作,它必须使用正确的配置转发消息。
我尝试使用RFHUtils 模拟 JMS 消息。当我将传递模式设置为 1 并将其发送到我的 .NET 客户端时,它再次读取 1,但如果我还在 MQMD 中更改 MQ 消息的持久性,它读取为 0。看起来JMSDeliveryMode 中的值根本没有使用,并且 . NET 客户端总是从Persistence 属性中读取值,但这是不正确的行为!这两个属性的正确值范围不同:
JMSDeliveryMode 正确值(来自 jms.jar):
- 1 -
DeliveryMode.NON_PERSISTENT - 2 -
DeliveryMode.PERSISTENT
Persistence 正确值(来自 amqmdnet.dll):
- 0 -
MQC.MQPER_NOT_PERSISTENT - 1 -
MQC.MQPER_PERSISTENT - 2 -
MQC.MQPER_PERSISTENCE_AS_Q_DEF/MQC.MQPER_PERSISTENCE_AS_TOPIC_DEF
【问题讨论】: