明示的に設定したメッセージプロパティが表示されない(Spring / JMS / MQ)

ibm-mq jms jmstemplate spring-jms websphere
明示的に設定したメッセージプロパティが表示されない(Spring / JMS / MQ)

2つの別個のプロセスが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`が実行されます。

メッセージプロパティの設定(GmmThreadId、CASHFLOW-1234)

” ” ‘

リーダーは、メッセージセレクターを使用してこのメ​​ッセージを取得します。 (SpringのJmsTemplate v1を使用-私は知っている古いバージョンですが、ベンダーのフレームワークに焼き付けられており、使用せざるを得ません。

template.receiveSelected(queue、" GmmThreadId = 'CASHFLOW-1234’または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で実行されています。

どこが悪いの?

  3  1


ベストアンサー

http://www.mqseries.net/phpBB2/viewtopic.php?=&p=171236 [このスレッド]で示されているように、宛先タイプが「MQ」の場合、メッセージプロパティは抑制されます。 私にとって、これはWebSphere App Serverコンソールで構成されます。 キュータイプを「JMS」に変更し、メッセージプロパティを永続化しました。

3


タイトルとURLをコピーしました