【问题标题】:Not seeing message properties that I set explicitly (Spring/JMS/MQ)看不到我明确设置的消息属性(Spring/JMS/MQ)
【发布时间】:2011-11-30 07:54:18
【问题描述】:

两个独立的进程通过 JMS over MQ 进行通信。

作者设置了一个字符串属性:

new MessageAction() {
    public void actOn(Message message) throws JMSException {
        logger.debug("Setting message property (GmmThreadId, CASHFLOW-1234)");
        message.setStringProperty("GmmThreadId", "CASHFLOW-1234");
    }
});

这个MessageAction被执行,如日志所示:

Setting message property (GmmThreadId, CASHFLOW-1234)


阅读器使用消息选择器来获取此消息。 (使用 Spring 的 JmsTemplate v1 - 我知道的一个旧版本,但它已融入我们供应商的框架,我们不得不使用它。

template.receiveSelected(queue, "GmmThreadId = 'CASHFLOW-1234' or GmmThreadId IS NULL");

队列中唯一的消息是日志显示作者设置了消息属性的消息。在读者的日志中,我列举了属性并尝试记录 GmmThreadId 的值。它还表明属性 GmmThreadId 不存在。

message property JMS_IBM_PutDate = 20111003
message property JMSXAppID = WebSphere MQ Client for Java
message property JMS_IBM_Format = MQSTR
message property JMS_IBM_PutApplType = 28
message property JMS_IBM_MsgType = 8
message property JMSXUserID = MUSR_MQADMIN
message property JMS_IBM_PutTime = 23551798
message property JMSXDeliveryCount = 2
message had GmmThreadId property of null

注意,如果我的消息选择器只有"GmmThreadId = 'CASHFLOW-1234'",那么什么都不会出队。

使用 WebSphere MQ Explorer 查看消息,我找不到任何地方查看应用程序集消息属性。消息类型是 MQSTR,如果这有什么不同的话。

读取器和写入器应用程序都在 WebSphere v6 中运行。

我哪里出错了?

【问题讨论】:

    标签: jms websphere ibm-mq jmstemplate spring-jms


    【解决方案1】:

    this thread 所示,如果目标类型为“MQ”,则消息属性将被抑制。对我来说,这是在 WebSphere App Server 控制台中配置的。我将队列类型更改为“JMS”,并且保留了消息属性。

    【讨论】:

    • 还要注意IH03 support pack 中的工具rfhutil.exe 将允许查看消息的各种扩展属性。
    • 3 个月后,我完全忘记了这一点。 StackOverflow 又来救援了!
    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 2019-06-16
    • 2020-08-20
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多