You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by manishbel <ma...@yahoo.com> on 2007/08/04 01:03:53 UTC

Need help with Failover in Master Slave scenario

I have:
- Jdbc Master Slave brokers setup in a weblogic cluster.

- Each instance has set of receivers/consumer consuming message from queues
with exclusive consumer 
   behavior  so at a time any one of the cluster instance will be receiving
and processing all the messages.
- the receivers use connection factory with Failover transport.


What i want is 
- When one of the cluster instances go down. the receivers in the other
cluster instance should switch to the broker that has become master because
of the original master's failure. I tested it out but it doesnt work for me.


Here is the receiver code

   protected void performRunInternal() throws Exception {
      Message message = consumer.receive(getWakeupInterval());
      if (message != null && message instanceof TextMessage) {
         long count = 0;
         count++;
         debug("Received Message :" + count);
         TextMessage textMessage = (TextMessage) message;
         SomeClass incomingMessage =
messageFactory.createMessage(messageIndexSequence.getNext(), textMessage);
         messageHandler.handleMessage(incomingMessage, message);
         if (incomingMessage.getException() != null) {
            debug("Message number " + count + " errored out " +
incomingMessage.getException().getCause());
         }
         if (count % 1000 == 0) {
            getLogger().info(count + " messages received");
         }
      }
   }

The question is whether the consume.receive is going to take care of
failover? for that reason i registered my receiver as a Transport Listener
but for some reason the transport listener methods are not being called when
i killed one of the cluster instances where the Master Broker was running.

Here is the initialization code.

   protected void performInitializeInternal() throws Exception {
      getLogger().info("Starting receiver");
      connection = factory.createConnection(); -- > This is the failover
connection factory.

      if (connection instanceof ActiveMQConnection) {
         getLogger().info(getId() + " is becoming the transport listener");
         ((ActiveMQConnection) connection).addTransportListener(this);
      }
      
      Session session = connection.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
      consumer = session.createConsumer(pubTopic);

      connection.start();
   }


Any suggestions would be greatly appreciated.


Manish

-- 
View this message in context: http://www.nabble.com/Need-help-with-Failover-in-Master-Slave-scenario-tf4215133s2354.html#a11992077
Sent from the ActiveMQ - User mailing list archive at Nabble.com.