[jboss-user] [JBoss Messaging Users] - standalone consumer for clustered queue did not get all mess

arminhaaf do-not-reply at jboss.com
Wed Dec 9 04:09:02 EST 2009


we are currently migrating from JBoss AS 4.2.2  with MQ to a clustered JBoss AS 5.1 with messaging

We have some standalone JMS consumers to connect external systems. 

The problem is that a standalone JMS consumer connects to only one node and so gets the messages from this node only.

The queue is Clustered:

    <mbean code="org.jboss.jms.server.destination.QueueService"
  | name="jboss.messaging.destination:service=Queue,name=TestClusteredQueue"
  |            xmbean-dd="xmdesc/Queue-xmbean.xml">
  |         <depends>jboss.messaging:service=PostOffice</depends>
  |         <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |         <attribute name="Clustered">true</attribute>
  |     </mbean>
  | 

A sample external consumer
    
  | public static void main(String[] args) throws Exception {
  |         System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
  |         System.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
  |         System.setProperty("java.naming.provider.url", "node1:1100,node2:1100");
  | 
  | 
  |         final InitialContext tInitialContext = new InitialContext();
  |         final ConnectionFactory tConnFactory = (ConnectionFactory) tInitialContext.lookup("ClusteredConnectionFactory");
  |         final Queue tLisaToMfcQueue = (Queue) tInitialContext.lookup("/queue/TestClusteredQueue");
  | 
  |         javax.jms.Connection jmsConnection = tConnFactory.createConnection();
  | 
  |         Session tSession = jmsConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
  | 
  |         System.out.println("from browser");
  |         Enumeration tMessages = tSession.createBrowser(tLisaToMfcQueue).getEnumeration();
  |         while (tMessages.hasMoreElements()) {
  |             Message tMessage = (Message) tMessages.nextElement();
  |             System.out.println(tMessage);
  |         }
  | 
  |         System.out.println("from consumer");
  | 
  |         final MessageConsumer tConsumer = tSession.createConsumer(tLisaToMfcQueue);
  | 
  |         tConsumer.setMessageListener(new MessageListener() {
  |             public void onMessage(final Message pMessage) {
  |                 System.out.println(pMessage);
  |                 try {
  |                     pMessage.acknowledge();
  |                 } catch (JMSException e) {
  |                     e.printStackTrace();  
  |                 }
  |             }
  |         });
  | 
  |         jmsConnection.setExceptionListener(new ExceptionListener() {
  | 
  |             public void onException(final JMSException e) {
  |                 System.out.println("got exception");
  |             }
  |         });
  | 
  |         jmsConnection.start();
  | 
  |     }
  | 


So how can i get a standalone consumer getting all messages from the queue



View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4269737#4269737

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4269737



More information about the jboss-user mailing list