【问题标题】:IBM WebSphere MQ Overwriting TextMessage PropertyIBM WebSphere MQ 覆盖 TextMessage 属性
【发布时间】:2018-07-10 08:45:06
【问题描述】:

我在 TextMessage msg.setLongProperty("publishSequence", pubSeq); 上设置 Long 属性,并将其发送到本地 IBM WebSphere MQ 队列管理器以发送到远程队列。消息发送正常,但 MQ 在将 MQ 属性放入消息头时删除了 Long 属性。

以前有没有其他人遇到过这个问题?如果是这样,您是如何解决的?

【问题讨论】:

  • 仅供参考。我正在使用 JMS TextMessage 对象。

标签: java properties ibm-mq


【解决方案1】:

以下链接能够回答我的问题。我已经测试过了,它可以工作。

我在 MQQueue 对象上使用queue.setMessageBodyStyle(WMQConstants.WMQ_MESSAGE_BODY_JMS); 将主体样式设置为 JMS,以便它保留该属性。

【讨论】:

    【解决方案2】:

    您设置的属性不会映射到消息头。在旧版本的 WMQ 中,它映射到 RFH2 标头,但在新版本的 WMQ(V7.1 及更高版本)中,可以使用消息属性 setter/getter 方法访问该属性,因此通常看不到 RFH2 标头。

    queueschannels 上存在一个属性 PROPCTL,用于控制您是否看到 RFH2 标头。根据其设置方式,这些属性在有效负载中将不可见,因为不会生成 RFH2 标头。如果您设置 PROPCTL,那么您可以让 WMQ 传递带有 RFH2 标头的消息,您可以在那里看到该属性。否则,您将需要使用属性 getter 方法,但在任何情况下都不会在消息头中看到该属性,因为它不是在那里映射的。

    请参阅信息中心主题Mapping JMS fields onto WebSphere MQ fields (outgoing messages) 了解更多信息。

    【讨论】:

    • 收到消息时,我试图通过 getLongProperty 获取该属性,但它不存在。我试着阅读你的解释,但我仍然不知道该怎么做。
    • 设置属性时,是否捕获MessageNotWriteableException和JMSException?未处理的异常可能允许属性集失败,但仍会写入消息。您是否尝试过检索本地 QMgr 上的属性?这些属性可能会在通道或远程队列中转换为 RFH2。在本地检索它们将消除等式中的这些故障点。
    • 我找到了一个可能满足我需要的链接:www-01.ibm.com/support/docview.wss?uid=swg21573858。今晚我将在我的测试窗口中测试它,然后返回我的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2015-01-06
    相关资源
    最近更新 更多