两个独立的进程通过 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 中运行。
我哪里错了?