3

2 つの別個のプロセスが MQ 上の JMS を介して通信しています。

ライターは文字列プロパティを設定します。

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 で実行されています。

どこが間違っていますか?

4

1 に答える 1

3

このスレッドで示されているように、宛先タイプが「MQ」の場合、メッセージ プロパティは抑制されます。私の場合、これは WebSphere App Server コンソールで構成されています。キュー タイプを「JMS」に変更すると、メッセージ プロパティが保持されました。

于 2011-10-04T04:56:34.967 に答える