ssdimmanuel
ssdimmanuel

Reputation: 458

Getting the Queue name from within the MDB

I have 2 Websphere application Server(WAS) applications, one sending a message and the other reading and processing it . I need the queue name to be known in the reading application for my downstream processing. I am trying to get the queue name (in the reading application) by using the following code . But however I get NullPointerException since the getJMSDestination is returning null.

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

Note that the queue name is set via the destination object in the sending application. Is there any other parameters that I am missing to set in the sending application ?

Upvotes: 0

Views: 5598

Answers (2)

shuttsy
shuttsy

Reputation: 1645

I've using Spring with ActiveMQ, and this appears to work for me:

    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 );
       }
       ....

Does WAS have a Queue object you can cast to that exposes similar methods?

Upvotes: 0

Aviram Segal
Aviram Segal

Reputation: 11120

The message should have the destination stored in its JMSDestination property, you can try fetch that instead of using getJMSDestination()

Upvotes: 2

Related Questions