Details
Description
Hello,
The NMS failover client does not yet support the updateClusterClients options, so it won't respond to the list of brokers provided by the server.
The workaround is to provide the static list or use some other discovery mechanism like multicast.
Issue reported via forum :
Our goal is to use a network of brokers with failover and dynamic discovery (production environment will have around 100 brokers).
So we have configured 2 CentOS virtual machine for test:
vmware vsphere 4.1
-CentOS 6 32bits (AQsrv1 & AQsrv2)
-JRE6
-Fuse Message Broker v5.5.1 (see activemq.xml configuration at the end)
We have developed a NET4.0 application (Producer & Consumer) using:
-Apache.NMS 1.5.0
-Apache.NMS.activeMQ 1.5.5
If I use the following URI to connect: activemq:failover://(tcp://AQsrv1:61616,tcp://AQsrv2:61616)?transport.randomize=true&transport.startupMaxReconnectAttempts=0&transport.timeout=2000&nms.AsyncSend=true
-> when I stop the activeMQ process on AQsrv1: the failover works fine and application continue to send/consume messages on AQsrv2.
Now If I use the following URI:
activemq:failover://(tcp://AQsrv1:61616)?transport.randomize=true&transport.startupMaxReconnectAttempts=0&transport.timeout=2000&nms.AsyncSend=true
-> when I stop the activeMQ process on AQsrv1: the failover seems to not work anymore and my application is not able to connect to AQsrv2 automatically.
As I'm supposed to received a list of brokers (so AQsrv2) from AQsrv1
activemq.xml on both servers
<networkConnectors>
<networkConnector
name="ncelab-activeMQ"
uri="multicast://default?group=ncelab"
dynamicOnly="true"
networkTTL="2"
duplex="true"
prefetchSize="1"
decreaseNetworkConsumerPriority="false" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="openwire"
uri="tcp://0.0.0.0:61616"
discoveryUri="multicast://default?group=ncelab"
enableStatusMonitor="true"
rebalanceClusterClients="true"
updateClusterClients="true"
updateClusterClientsOnRemove="true" />
</transportConnectors>