On Tue, 2011-11-29 at 16:20 -0800, JRR wrote: > Hello Tim, > > I am playing with the simple producer and the fail over options. However, I > am not getting the results I expected and I'm hoping you can share some > insights. > > I am using version 3.2.3 of the activemq-cpp library on a SuSE Linux > machine. > > I changed the simple producer example so that the broker URI is: > ---------------------------------------- > std::string brokerURI = > "failover:(tcp://127.0.0.1:61616" > "?initialReconnectDelay=10" > "&maxReconnectDelay=100" > "&useExponentialBackOff=false" > "&maxReconnectAttempts=1" > "&startupMaxReconnectAttempts=1" > "&timeout=100" > ")"; > ---------------------------------------- > > > And I added output to show me the brokerURI and it is as I expected: > ---------------------------------------- > Broker URI: > failover:(tcp://127.0.0.1:61616?initialReconnectDelay=10&maxReconnectDelay=100&useExponentialBackOff=false&maxReconnectAttempts=1&startupMaxReconnectAttempts=1&timeout=100) > ---------------------------------------- > > I wanted to test the scenario when starting the producer when the broker > isn't running. With these setting, my expectation is that it would throw an > exception when the factory created the connection, and I would see the > stack trace (as per the simple example). > > However, what I found is that a connection object is created and returned > (even though the broker is not running), and then the code blocks at the > start() call that follows the connection create. I've confirmed this with > GDB. > > ---------------------------------------- > // Create a Connection > try{ > std::cout << "Connection before " << connection << "\n"; > connection = connectionFactory->createConnection(); > > std::cout << "Connection after " << connection << "\n"; > std::cout << "Connection done. Starting it\n"; > > connection->start(); > > } catch( CMSException& e ) { > e.printStackTrace(); > throw e; > } > std::cout << "Connection start done. Creating Session\n"; > ---------------------------------------- > > > What is the corrrect way to do this? What I want is to use the failover > method, but I don't want to wait forever. If the producer cannot initially > connect, I'd like to eventually timeout and quit.
I would suggest that you try the latest version of the client, this could be related to issues that were already fixed. Regards -- Tim Bish ------------ FuseSource Email: tim.b...@fusesource.com Web: http://fusesource.com Twitter: tabish121 Blog: http://timbish.blogspot.com/