2017-01-18 4 views
0

私は、JMSを使用しようとしています:パブリッシュ・サブスクライブチャンネルパブ/サブに単一ActiveMQのトピックに。チャンネルのActiveMQからメッセージを受信することはできますが、チャンネルに公開すると、メッセージ本文はヌルです(ActiveMQトピックでリスニングしている別のアプリケーションで受信した場合)。私はspring-integration-samples-> basic-> jmsを使用して問題を再現することができました。 jms:outbound-channel-adapterの代わりにjms:publish-subscribe-channelを使用するようにoutboundChannelAdapter.xmlを変更しました。単純な文字列メッセージを発行するために必要なステップがもう1つありますか?ここで私のコードをoutboundChannelAdapter.xmlに変更しました:JMSメッセージ本文がnullである:パブリッシュ・サブスクライブチャンネル

<stream:stdin-channel-adapter id="stdin" channel="stdinToJmsoutChannel"/> 

<jms:publish-subscribe-channel id="stdinToJmsoutChannel" topic="requestTopic" />  

<stream:stdout-channel-adapter id="stdout" channel="stdinToJmsoutChannel" append-newline="true"/> 

答えて

0

「メッセージ本文がヌル」ということはわかりません。

私はサンプルと正確に同じ変更を行い、それが私のためにうまく働いた...

Please type something and hit <enter> 

foo 
foo 

ActiveMQのニーズがクラスをホワイトリストに登録するので、私は(全体のメッセージがあり、コマンドラインに-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=*を追加する必要がありましたjmsでバックアップされたチャネルでシリアル化されています)。

+0

返信いただきありがとうございます。シリアライズされたオブジェクトではなく文字列としてメッセージを送信することは可能ですか? –

+0

JMSバックチャネルではない - チャネルアダプタのペアを使用します。メッセージペイロードはJMSメッセージ本文になります。ヘッダはJMSヘッダーにマップされます( 'extract-payload'がtrueの場合 - デフォルト)。 JMSでバックアップされたチャネルは永続性を目的としており、他のアプリケーションにデータを配信するためのものではありません。 –

+0

それを得ました。同じトピックでpub/subを使用しているので、チャネルアダプタのペアを使用したときに送信した同じメッセージを受信しないようにするにはどうすればよいですか? –

関連する問題