Hi Andy, thanks for the ideas, I'll give them a try. Just one thing. Why "The embedded ActiveMQ should not be a slave"?
[] Leo On Sun, Oct 26, 2014 at 7:12 AM, Andy Gumbrecht <[email protected]> wrote: > 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 > >
