For a Master Slave failover broker setup. The system does not reconnect to the
broker if the brokers are restarted
------------------------------------------------------------------------------------------------------------------
Key: AMQ-3256
URL: https://issues.apache.org/jira/browse/AMQ-3256
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.4.2
Environment: Windows XP
Reporter: andy boot
Start a Master & Slave broker.
Connect to them with failover=true and randomize=false
Message Sending - ok.
Kill the Master broker.
Message Sending - ok.
Kill the Slave broker.
Message Sending - paused (both brokers are down)
Restart both brokers.
Message Sending - fail.
The above WORKS in ActiveMQ 5.3.1 but fails in 5.4.2
I wonder if this is related to: https://issues.apache.org/jira/browse/AMQ-3213
Steps to reproduce the problem:
* Run Broker, BrokerSlave, Client, Server,
* Note messages being sent from Server to Client
* Kill Broker
* Note messages being sent from Server to Client
* Kill BrokerSlave
* Restart Broker & BrokerSlave,
* Messages no longer being sent.
{code:title=Broker.java|borderStyle=solid}
public class Broker {
public static void main(String[] args) throws Exception {
BrokerService broker;
broker = BrokerFactory.createBroker("xbean:master.xml");
broker.start();
while(true) {
Thread.sleep(10*1000);
}
}
}
{code}
{code:title=BrokerSlave.java|borderStyle=solid}
public class BrokerSlave {
public static void main(String[] args) throws Exception {
BrokerService broker;
broker = BrokerFactory.createBroker("xbean:slave.xml");
broker.start();
while(true) {
Thread.sleep(10*1000);
}
}
}
{code}
{code:title=Client.java|borderStyle=solid}
public class Client {
static String url =
"failover://(tcp://localhost:61616,tcp://localhost:61617)?randomize=false";
static String user = null;
static String password = null;
public static void main(String[] args) throws JMSException,
InterruptedException {
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(user, password, url);
final Connection connection = connectionFactory.createConnection();
final Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
final Queue orderQueue = session.createQueue("VendorOrderQueue");
final MessageConsumer consumer = session.createConsumer(orderQueue);
consumer.setMessageListener(new MsgL() );
session.run();
connection.start();
while(true) {
Thread.sleep(5000);
}
}
private static class MsgL implements MessageListener {
public void onMessage(final Message message) {
System.out.println("Got message: "+message);
}
}
}
{code}
{code:title=Server.java|borderStyle=solid}
public class Server {
static String url =
"failover://(tcp://localhost:61616,tcp://localhost:61617)?randomize=false";
static String user = null;
static String password = null;
public static void main(String[] args) throws JMSException,
InterruptedException {
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory(user, password, url);
final Connection connection = connectionFactory.createConnection();
final Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
final Queue orderQueue = session.createQueue("VendorOrderQueue");
final MessageProducer producer = session.createProducer(orderQueue);
session.run();
connection.start();
for (int i = 0; i < 100; i++) {
MapMessage message = session.createMapMessage();
message.setString("Item", "hello "+i);
System.out.println("Sending: "+message);
producer.send(message);
System.out.println("Wait for 5s");
Thread.sleep(5000);
}
}
}
{code}
{code:title=master.xml|borderStyle=solid}
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<broker xmlns="http://activemq.apache.org/schema/core"
persistent="false"
waitForSlave="true"
useJmx="true">
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
</beans>
{code}
{code:title=slave.xml|borderStyle=solid}
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<broker xmlns="http://activemq.apache.org/schema/core"
persistent="false"
useJmx="false"
shutdownOnMasterFailure="false">
<services>
<masterConnector remoteURI="tcp://localhost:61616"/>
</services>
<transportConnectors>
<transportConnector uri="tcp://localhost:61617"/>
</transportConnectors>
</broker>
</beans>
{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira