All, I have the following environment setup:
ActiveMQ(a) <----> ActiveMQ(b) |\ /| | \ / | | \ / | | \_____________/ | | / \ | | / \ | | / \ | |/ \| ServiceMix(a) ServiceMix(b) The AvtiveMQ instances are connecting to each other via a reliable networkChannel (each instance points to the other). They are registering with each other properly by all accounts. The ServiceMix instances each register with both ActiveMQ instances, again via reliable networkChannels via the JMS Flow. When the ServiceMix nodes are brought up, they register with the brokers, and cross register their available services with each other. ServiceMix(a) provides "service1" and ServiceMix(b) provides "service2". When all of the containers are running (2 ActiveMQ and 2 ServiceMix), ServiceMix(a)'s "service1" invokes "service2" without incident - even though it is provided by ServiceMix(b). If I kill one of the ActiveMQ nodes, lets say ActiveMQ(a), and wait a bit, everything fails over properly, and the same invocation of "service1"->"service2" works properly. However, if I invoke "service1" and then kill ActiveMQ(a), the call results in a time out. It seems as though if service resolution is performed during the failover process something goes wrong - it appears that the remote service resolver does not retry if its lookup fails. The scenario: remoteResolver asks ActiveMQ(a), the current JMS flow provider, for "service2", but ActiveMQ(a) doesn't respond (it was killed) so remoteResolver either throws an exception or traps an exception and exits or just waits. I would have expected that the remoteResolver would try the initial JMS flow provider, ActiveMQ(a), and upon failure check with the failed-over JMS flow provider, in this case ActiveMQ(b). Please share your experiences with clustering ActiveMQ and using the JMS Flow to cluster ServiceMix. Am I misconfiguring something or is this a limitation of the JBI remote service resolver? regards, /jonathan
