1

私は Websphere MQ を使用しており、Spring 統合と jms アダプターを使用してキューからメッセージを読み取っています。

メッセージを手動でキューに追加すると、アプリケーションはメッセージを読み取り、データを a として読み取り、Stringすべて問題ありません。

ただし、外部パーティがメッセージをキューに追加している場合、アプリケーションはメッセージをバイト配列として読み取り、次の例外をスローします。

Caused by: java.lang.ClassCastException: [B cannot be cast to java.lang.String

メッセージは、MQExplorer で同じように見えます。

Format 列に気付きましたが、文字列として処理されているMQSTRメッセージには値があり、Byte[] として処理されているメッセージには何もありません。これは関連している可能性がありますか?もしそうなら、メッセージの「フォーマット」を設定する方法はありますか?

少なくとも問題を再現できるように、メッセージのペイロード コンテンツ タイプを決定するものを知っている人はいますか?

4

2 に答える 2

4

私は以前にこのような状況に遭遇したことがあります。外部パーティは JMS を使用していない可能性がありますが、MQI または Websphere MQ classes for Java を使用している可能性があります。

これは、メッセージを ByteMessages として受信している可能性があることを意味します。

この記事では、MQ メッセージから JMS メッセージへの変換について説明します。

私は外部の当事者と話し、彼らがどのようにメッセージを送っているのかを尋ねます。設定している MQMD プロパティの詳細を提供する必要がある場合があります。MessageListener でこれらを取得する必要がある場合があります。

于 2013-01-16T17:51:23.500 に答える