0

2つのWebsphereアプリケーションサーバー(WAS)アプリケーションがあり、1つはメッセージを送信し、もう1つはメッセージを読み取って処理します。ダウンストリーム処理の読み取りアプリケーションでキュー名を認識する必要があります。次のコードを使用して、(読み取りアプリケーションで)キュー名を取得しようとしています。ただし、getJMSDestinationがを返しているため、NullPointerExceptionが発生しnullます。

Queue queue = (Queue)message.getJMSDestination();
logger.info("Queue ID: "+queue.getQueueName());

キュー名は、送信側アプリケーションの宛先オブジェクトを介して設定されることに注意してください。送信アプリケーションで設定するために不足している他のパラメーターはありますか?

4

2 に答える 2

2

メッセージのプロパティに宛先が保存されている必要がありますJMSDestination。使用する代わりに、宛先をフェッチしてみてください。getJMSDestination()

于 2013-03-05T11:11:01.560 に答える
0

私はActiveMQでSpringを使用していますが、これは私にとってはうまくいくようです:

    public void processMessage( Message msg )
    {
       // Get the queue name from the supplied Message.
       String sourceQueueName = "UNKNOWN";
       try
       {
           ActiveMQDestination sourceQueue = (ActiveMQDestination) msg.getJMSDestination();
           sourceQueueName = sourceQueue.getPhysicalName();
       }
       catch ( JMSException e )
       {
           LOGGER.error( "Cannot get JMSDestination from Message: " + msg, e );
       }
       ....

WASには、同様のメソッドを公開するためにキャストできるQueueオブジェクトがありますか?

于 2013-03-05T11:13:48.200 に答える