You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by pompanoSlayer <mo...@gmail.com> on 2016/06/08 14:45:59 UTC

failover protocol not reconnecting to single boker

From what I read, I would only need to add failover:(tcp://localhost:61616)
as the connection url for the broker and activeMQ does all the reconnecting
for me. However I can't seem to get this right. The program waits for the
broker to go online and is able to read messages out of the queue when
there's one. When I stop the broker, the program just exits.

Here's my test program.

    QueueConnectionFactory queueConnectionFactory;
    QueueConnection queueConnection;
    QueueSession queueSession;
    QueueReceiver queueReceiver;
    Queue queue;

        ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("failover:(tcp://localhost:61616)");

        // Create a Connection
        queueConnection = connectionFactory.createQueueConnection();
        queueSession = queueConnection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
        queue = queueSession.createQueue("testUpdate");
        queueReceiver = queueSession.createReceiver(queue);

        queueReceiver.setMessageListener(
            message ->{
                try {
                    if(message != null) {
                        String msgText = null;
                        if (message instanceof TextMessage) {
                            msgText = ((TextMessage) message).getText();
                        } else {
                            msgText = message.toString();
                            System.out.println("message is of type " +
message.getClass());
                        }
                        System.out.println("Message Received: " + msgText);
                    }
                } catch (JMSException jmse) {
                        System.err.println("An exception occurred: " +
jmse.getMessage());
                }
            }
        );
        queueConnection.start();


I am not sure what I am missing or the failover protocol is not what I am
expecting it to do.



--
View this message in context: http://activemq.2283324.n4.nabble.com/failover-protocol-not-reconnecting-to-single-boker-tp4712783.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Re: failover protocol not reconnecting to single boker

Posted by pompanoSlayer <mo...@gmail.com>.
Ah, so the thread that come with failover protocol to reconnecting to the
broker is non-daemon. So I need to come up with a logic to keep the JVM
open. 

Got it!

Thanks! 



--
View this message in context: http://activemq.2283324.n4.nabble.com/failover-protocol-not-reconnecting-to-single-boker-tp4712783p4712786.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Re: failover protocol not reconnecting to single boker

Posted by Timothy Bish <ta...@gmail.com>.
On 06/08/2016 10:45 AM, pompanoSlayer wrote:
> >From what I read, I would only need to add failover:(tcp://localhost:61616)
> as the connection url for the broker and activeMQ does all the reconnecting
> for me. However I can't seem to get this right. The program waits for the
> broker to go online and is able to read messages out of the queue when
> there's one. When I stop the broker, the program just exits.
>
> Here's my test program.
>
>      QueueConnectionFactory queueConnectionFactory;
>      QueueConnection queueConnection;
>      QueueSession queueSession;
>      QueueReceiver queueReceiver;
>      Queue queue;
>
>          ActiveMQConnectionFactory connectionFactory = new
> ActiveMQConnectionFactory("failover:(tcp://localhost:61616)");
>
>          // Create a Connection
>          queueConnection = connectionFactory.createQueueConnection();
>          queueSession = queueConnection.createQueueSession(false,
> Session.AUTO_ACKNOWLEDGE);
>          queue = queueSession.createQueue("testUpdate");
>          queueReceiver = queueSession.createReceiver(queue);
>
>          queueReceiver.setMessageListener(
>              message ->{
>                  try {
>                      if(message != null) {
>                          String msgText = null;
>                          if (message instanceof TextMessage) {
>                              msgText = ((TextMessage) message).getText();
>                          } else {
>                              msgText = message.toString();
>                              System.out.println("message is of type " +
> message.getClass());
>                          }
>                          System.out.println("Message Received: " + msgText);
>                      }
>                  } catch (JMSException jmse) {
>                          System.err.println("An exception occurred: " +
> jmse.getMessage());
>                  }
>              }
>          );
>          queueConnection.start();
>
>
> I am not sure what I am missing or the failover protocol is not what I am
> expecting it to do.
>
>
>
> --
> View this message in context: http://activemq.2283324.n4.nabble.com/failover-protocol-not-reconnecting-to-single-boker-tp4712783.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
What is keeping your program alive?  Are you simply relying on the fact 
that there is at least one non-daemon thread running (bad idea) or do 
you have some control logic to ensure it stays alive?

-- 
Tim Bish
twitter: @tabish121
blog: http://timbish.blogspot.com/