Hi Leonardo,

I have used ActiveMQ and failover in production for years and not had any issues. So my gut feeling is telling me this is something else. Let's see if we can get this resolved without changing your architecture.

The default StartupTimeout is 30 seconds. If the broker is not started within this period then TomEE startup will continue. I don't see where it would wait forever? Can you perform a thread dump and see where it is blocking in your startup if it takes longer than 30 seconds (or change the StartupTimeout)?

<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig = ServerUrl = failover:(*nio*://s1:61616,*nio*://s2:61616)?randomize=*true*
*StartupTimeout = 5000*
</Resource>

Failover is purely an ActiveMQ client option, so we need to try and work out where the blocking occurs. Even if both ActiveMQs are not running this should not halt TomEE startup indefinitely.

The embedded ActiveMQ should not be a slave. If you want a local ActiveMQ as a slave and a remote as the master then use the activemq.xml configuration described here: http://tomee.apache.org/jms-resources-and-mdb-container.html

Also, if 'randomize=false' is defined then *s1* should be the *master*, or try setting it to true (the default) to see if that improves the failover to the master. Failover defaults and details can be found here: http://activemq.apache.org/failover-transport-reference.html

Andy.

On 25/10/2014 15:15, Leonardo K. Shikida wrote:
Hi Andy

If I've understood Romain well, setting a time to wait won't solve the problem.

ActiveMQ server-slave failover works like that: the first server becomes the master and serves, the slave server acquire a lock in the DB and waits for the master server to release the lock to take over. This may be forever if the master server never stops.

The problem here is that TomEE assumes (or it seems to assume) that if the embedded JMS instance is not started, then it cannot start the container itself, and it simply hangs forever during the initialization. So, actually, the slave is somewhat started, because it's just waiting for a lock, but somehow, I think this is not what TomEE considers to be a "ready" state.

I'll have to change the current architecture to start these master-slave JMS servers outside TomEE, although, I'd like to keep it simpler. :-(


[]

Leo

On Sat, Oct 25, 2014 at 6:45 AM, Andy Gumbrecht <[email protected] <mailto:[email protected]>> wrote:

    And I'd suggest replacing 'tcp' with 'nio' for better performance.

    Andy.


    On 24/10/2014 22:47, Romain Manni-Bucau wrote:

        I don't think so, we want to fail is broker doesn't start in
        general
        Romain Manni-Bucau
        Twitter: @rmannibucau
        Blog: http://rmannibucau.wordpress.com/
        LinkedIn: http://fr.linkedin.com/in/rmannibucau
        Github: https://github.com/rmannibucau



        2014-10-24 22:37 GMT+02:00 Leonardo K. Shikida
        <[email protected] <mailto:[email protected]>>:

            is there any property I can set to let tomee start
            regardless its embedded
            jms acquires the lock or not?

            []

            Leo

            On Fri, Oct 24, 2014 at 6:04 PM, Romain Manni-Bucau
            <[email protected] <mailto:[email protected]>>
            wrote:

                   It is not shocking if second broker is configured
                as a slave.

                Most of the time such config are done with an external
                amq to keep tomee
                stateless
                Le 24 oct. 2014 21:37, "Leonardo K. Shikida"
                <[email protected] <mailto:[email protected]>> a écrit :

                    well, I am using BrokerXmlConfig=xbean:file... to
                    get the properties file

                    but then, here's the problem. While the first
                    tomee starts, the second

                one

                    seems to wait for its embedded JMS to start. Since
                    it will be a slave
                    server, waiting for a lock, whole tomee also waits
                    for it to start...

                    so tomee does not start.

                    is that the expected behavior?



                    []

                    Leo

                    On Fri, Oct 24, 2014 at 3:39 PM, Leonardo K.
                    Shikida <[email protected] <mailto:[email protected]>>
                    wrote:

                        Hi

                        I can run 2 tomee's using 2 external JMS
                        servers in the failover mode,
                        using a tomee.xml like this

                              <Resource id="MyJmsResourceAdapter"

                type="ActiveMQResourceAdapter">

                                  BrokerXmlConfig  =
                                  ServerUrl =
                        failover:(tcp://s1:61616,tcp://s2:61616)?randomize=false
                              </Resource>


                        If I want to start two embedded JMS servers,
                        one in each tomee, in a
                        failover mode, what's the syntax? I've been
                        trying this

                              <Resource id="MyJmsResourceAdapter"

                type="ActiveMQResourceAdapter">

                                  BrokerXmlConfig =
                        broker:(tcp://s1:61616)?persistent=true
                                  ServerUrl =
                        failover:(tcp://s1:61616,tcp:/s2:61616)?randomize=false
                                  DataSource = MyJmsDataSource
                              </Resource>

                        where MyJmsDataSource points to some JDBC
                        resource (must be the same

                for

                        both). Of course, the other tomee declares its
                        broker in the
                        "BrokerXmlConfig"

                        But something is not right. I feel I am
                        missing something. Is this the
                        right syntax?

                        TIA

                        Leo



-- Andy Gumbrecht
        https://twitter.com/AndyGeeDe
        http://www.tomitribe.com



--
  Andy Gumbrecht
  https://twitter.com/AndyGeeDe
  http://www.tomitribe.com

Reply via email to