1
votes

I am using a distributed jms queue and weblogic is my app server. There are three jms servers deployed in my clustered enviroment. The producers just send the message using name of queue jndi lookup 'udq' for example. Now I have associated a consumer for each jms server and I was able to consume the message, no problem so far.

Here is question, can I have a single consumer to consume the messages from the 3 jms servers. The weblogic allows jndi naming for destination lookup with following syntax @

            qsession1 = qcon1.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession2 = qcon2.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            qsession3 = qcon3.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

            queue1 = (Queue)ctx.lookup("JMSServer-1@UDQ");
            queue2 = (Queue)ctx.lookup("JMSServer-2@UDQ");
            queue3 = (Queue)ctx.lookup("JMSServer-3@UDQ");
            qreceiver1 = qsession1.createReceiver(queue1);
            qreceiver2 = qsession2.createReceiver(queue2);
            qreceiver3 = qsession3.createReceiver(queue3);
            qreceiver1.setMessageListener(this);
            qreceiver2.setMessageListener(this);
            qreceiver3.setMessageListener(this);

            qcon1.start();
            qcon2.start();
            qcon3.start();

I have only one OnMessage implemented for the above consumer. This does not work. Any suggestions please..

2

2 Answers

3
votes

No, you can't have a consumer receiving messages from more than one JMS server. A consumer can receive messages from only one JMS server. You need to create multiple consumers to receive messages from multiple JMS servers.

0
votes

you can use "Queue Forwarding" function. From online documentation of wls 10.3:

"Queue members can forward messages to other queue members by configuring the Forward Delay attribute in the Administration Console, which is disabled by default. This attribute defines the amount of time, in seconds, that a distributed queue member with messages, but which has no consumers, will wait before forwarding its messages to other queue members that do have consumers."

here a link: http://docs.oracle.com/cd/E13222_01/wls/docs103/jms/dds.html#wp1260816

You can configure this feature from administration of each single queue.