[ https://issues.apache.org/jira/browse/AMQ-3213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16943339#comment-16943339 ]
Drobyshev Maksim commented on AMQ-3213: --------------------------------------- [~tabish] hello, we got the same issue, but we use 5.15.10 version. > failover doesn't reconnect after broker restart > ----------------------------------------------- > > Key: AMQ-3213 > URL: https://issues.apache.org/jira/browse/AMQ-3213 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.4.2 > Environment: Windows 7 x64, jdk 1.6.0_21 > Reporter: Ivan Shcheklein > Priority: Major > Fix For: 5.6.0 > > > I have a network of three brokers: two embedded (publisher and subscriber) > and one stand alone remote. Embedded brokers connect to the remote with > duplex static failover connections. Everything works fine if remote broker is > not restarted. After the remote broker is restarted embedded brokers fail to > reestablish duplex bridges. Subscriber doesn't receive any messages and in > logs I have: > *Subscriber worker:* > {code} > Received 14-th message. > Received 15-th message. > Received 16-th message. > 2011:03:09 18:19:08,276 [WARN ] > org.apache.activemq.transport.failover.FailoverTransport - Transport > (localhost/127.0.0.1:61616) failed to tcp://localhost:61616 , attempting to > automatically reconnect due to: java.net.SocketException: Connection reset > 2011:03:09 18:19:08,276 [INFO ] > org.apache.activemq.network.DemandForwardingBridgeSupport - Outbound > transport to remote interrupted. > 2011:03:09 18:19:22,426 [INFO ] > org.apache.activemq.network.DemandForwardingBridgeSupport - Network > connection between vm://local1#0 and tcp://localhost:61616(remote) has been > established. > 2011:03:09 18:19:22,429 [INFO ] > org.apache.activemq.network.DemandForwardingBridgeSupport - Outbound > transport to remote resumed > 2011:03:09 18:19:22,429 [INFO ] > org.apache.activemq.transport.failover.FailoverTransport - Successfully > reconnected to tcp://localhost:61616 > 2011:03:09 18:19:22,455 [WARN ] > org.apache.activemq.broker.TransportConnection - Unexpected extra broker info > command received: BrokerInfo {commandId = 1929, responseRequired = false, > brokerId = ID:Air-17262-1299683959982-0:1, brokerURL = > tcp://validation.sls.microsoft.com:61616, slaveBroker = false, masterBroker = > false, faultTolerantConfiguration = false, networkConnection = false, > duplexConnection = false, peerBrokerInfos = [], brokerName = remote, > connectionId = 0, brokerUploadUrl = null, networkProperties = null} > {code} > *Publisher worker:* > {code} > Sending 28-th message > Sending 29-th message > Sending 30-th message > 2011:03:09 18:19:22,430 [INFO ] > org.apache.activemq.network.DemandForwardingBridgeSupport - Network > connection between vm://local#0 and tcp://localhost:61616(remote) has been > established. > 2011:03:09 18:19:22,435 [INFO ] > org.apache.activemq.network.DemandForwardingBridgeSupport - Outbound > transport to remote resumed > 2011:03:09 18:19:22,435 [INFO ] > org.apache.activemq.transport.failover.FailoverTransport - Successfully > reconnected to tcp://localhost:61616 > 2011:03:09 18:19:22,469 [WARN ] > org.apache.activemq.broker.TransportConnection - Unexpected extra broker info > command received: BrokerInfo {commandId = 1911, responseRequired = false, > brokerId = ID:Air-17262-1299683959982-0:1, brokerURL = > tcp://validation.sls.microsoft.com:61616, slaveBroker = false, masterBroker = > false, faultTolerantConfiguration = false, networkConnection = false, > duplexConnection = false, peerBrokerInfos = [], brokerName = remote, > connectionId = 0, brokerUploadUrl = null, networkProperties = null} > Sending 31-th message > Sending 32-th message > Sending 33-th message > {code} > *Sample code to reproduce this issue:* > {code} > import org.apache.activemq.ActiveMQConnectionFactory; > import org.apache.activemq.broker.BrokerService; > import org.apache.activemq.broker.TransportConnector; > import org.apache.activemq.network.NetworkConnector; > import javax.jms.*; > import java.net.URI; > public class JmsTester implements MessageListener { > private static final int size = 256; > private static byte[] payload; > static { > char[] DATA = "abcdefghijklmnopqrstuvwxyz".toCharArray(); > payload = new byte[size]; > for (int i = 0; i < size; i++) { > payload[i] = (byte)DATA[i % DATA.length]; > } > } > public static void main(String[] args) throws Exception { > if(System.getProperty("jms.mode").equals("publisher")) > publisher(); > else if(System.getProperty("jms.mode").equals("broker")) > broker(); > else > subscriber(); > } > private static void publisher() throws Exception { > System.out.println("Starting publisher ..."); > BrokerService broker = new BrokerService(); > broker.setBrokerName("local"); > broker.setUseJmx(true); > broker.setPersistent(true); > NetworkConnector nc = > broker.addNetworkConnector("static:(failover:(tcp://localhost:61616))"); > nc.setDuplex(true); > nc.setNetworkTTL(4); > broker.start(); > ActiveMQConnectionFactory factory = new > ActiveMQConnectionFactory("vm://local"); > Connection connection = factory.createConnection(); > Session session = connection.createSession(false, > Session.DUPS_OK_ACKNOWLEDGE); > Topic topic = session.createTopic("topictest.messages"); > MessageProducer publisher = session.createProducer(topic); > publisher.setDeliveryMode(DeliveryMode.PERSISTENT); > for (int i=0; i<1000; i++) { > Thread.sleep(1000); > System.out.println("Sending " + i + "-th message"); > BytesMessage msg = session.createBytesMessage(); > msg.setIntProperty("count", i); > msg.writeBytes(payload); > publisher.send(msg); > } > broker.stop(); > } > private static void broker() throws Exception { > System.out.println("Starting broker ..."); > BrokerService broker = new BrokerService(); > broker.setPersistent(true); > broker.setBrokerName("remote"); > broker.setUseJmx(true); > TransportConnector connector = new TransportConnector(); > connector.setUri(new URI("tcp://localhost:61616")); > > broker.addConnector(connector); > broker.start(); > while(true) { } > } > private static void subscriber() throws Exception { > System.out.println("Starting subscriber ..."); > BrokerService broker = new BrokerService(); > broker.setBrokerName("local1"); > broker.setUseJmx(true); > broker.setPersistent(true); > NetworkConnector nc = > broker.addNetworkConnector("static:(failover:(tcp://localhost:61616))"); > nc.setDuplex(true); > nc.setNetworkTTL(4); > broker.start(); > ActiveMQConnectionFactory factory = new > ActiveMQConnectionFactory("vm://local1"); > Connection connection = factory.createConnection(); > connection.setClientID("subscriber2"); > Session session = connection.createSession(false, > Session.DUPS_OK_ACKNOWLEDGE); > Topic topic = session.createTopic("topictest.messages"); > MessageConsumer consumer = session.createDurableSubscriber(topic, > "subscriber2"); > JmsTester tester = new JmsTester(); > consumer.setMessageListener(tester); > connection.start(); > while(true) { > Thread.sleep(1000); > } > } > @Override > public void onMessage(Message message) { > try { > int count = message.getIntProperty("count"); > System.out.println("Received " + count + "-th message."); > } catch (JMSException e) { > e.printStackTrace(); > } > } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)