single jms consumer for multiple jms servers

假如想象 提交于 2021-01-28 21:52:33

问题


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..


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/14122020/single-jms-consumer-for-multiple-jms-servers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!