0

我有 2 个 Websphere 应用程序服务器(WAS)应用程序,一个发送消息,另一个读取和处理它。我需要在阅读应用程序中知道队列名称以进行下游处理。我正在尝试使用以下代码获取队列名称(在阅读应用程序中)。但是我得到 NullPointerException 因为getJMSDestination正在返回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

我将 Spring 与 ActiveMQ 一起使用,这似乎对我有用:

    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 回答