Hi, I see your test case attached to the issues. Seems like everything is OK.
Cheers -- Dejan Bosanac - http://twitter.com/dejanb Open Source Integration - http://fusesource.com/ ActiveMQ in Action - http://www.manning.com/snyder/ Blog - http://www.nighttale.net On Sat, May 8, 2010 at 4:05 PM, Geoffrey Arnold <geoff...@geoffreyarnold.com > wrote: > Looks like the attachment didn't come through... inlining test case here. > Any thoughts? > > > /////////////////////////////////////////////////////////////////////////////////// > package org.activemq; > > import org.apache.activemq.ActiveMQConnectionFactory; > import org.apache.activemq.broker.BrokerService; > import org.apache.activemq.network.NetworkConnector; > import org.junit.Test; > import org.springframework.jms.core.JmsOperations; > import org.springframework.jms.core.JmsTemplate; > import org.springframework.jms.core.MessageCreator; > > import javax.jms.ConnectionFactory; > import javax.jms.JMSException; > import javax.jms.Message; > import javax.jms.Session; > import javax.management.MBeanServer; > import java.lang.management.ManagementFactory; > import java.net.URI; > > import static org.junit.Assert.assertNotNull; > > public class NetworkOfBrokersTest { > > private static final MBeanServer PLATFORM_MBEAN_SERVER = > ManagementFactory.getPlatformMBeanServer(); > private static final String QUEUE_NAME = "testQueue"; > > @Test > public void testNetworkOfBrokersHandlesRestartOfNetworkConnector() > throws Exception { > // create consumer broker > BrokerService consumerBrokerService = > createBrokerService("consumerBrokerService"); > consumerBrokerService.addConnector("tcp://localhost:61616"); > consumerBrokerService.start(); > > JmsOperations consumerJmsOperations = > > > createJmsOperations(createConnectionFactory(consumerBrokerService.getVmConnectorURI())); > > // create producer broker in "network-of-brokers" configuration > BrokerService producerBrokerService = > createBrokerService("producerBrokerService"); > NetworkConnector networkConnector = > producerBrokerService.addNetworkConnector("static:(tcp://localhost:61616)"); > producerBrokerService.start(); > > JmsOperations producerJmsOperations = > > > createJmsOperations(createConnectionFactory(producerBrokerService.getVmConnectorURI())); > > try { > // assert "network-of-brokers" configuration is working > > assertMessageSentByProducerIsReceivedByConsumer(consumerJmsOperations, > producerJmsOperations); > > // restart network connector via JMX > PLATFORM_MBEAN_SERVER.invoke(networkConnector.getObjectName(), > "stop", new Object[0], new String[0]); > PLATFORM_MBEAN_SERVER.invoke(networkConnector.getObjectName(), > "start", new Object[0], new String[0]); > > // assert "network-of-brokers" configuration is working > > assertMessageSentByProducerIsReceivedByConsumer(consumerJmsOperations, > producerJmsOperations); > } > finally { > consumerBrokerService.stop(); > producerBrokerService.stop(); > } > } > > private static BrokerService createBrokerService(String brokerName) { > BrokerService brokerService = new BrokerService(); > brokerService.getManagementContext().setCreateConnector(false); > brokerService.setBrokerName(brokerName); > brokerService.setPersistent(false); > brokerService.setTempDataStore(null); > brokerService.setUseJmx(true); > brokerService.setUseShutdownHook(false); > > return brokerService; > } > > private static ConnectionFactory createConnectionFactory(URI brokerUrl) > { > ActiveMQConnectionFactory connectionFactory = new > ActiveMQConnectionFactory(); > connectionFactory.getPrefetchPolicy().setAll(1); > connectionFactory.setBrokerURL(brokerUrl.toString()); > connectionFactory.setDispatchAsync(false); > connectionFactory.setUseAsyncSend(false); > > return connectionFactory; > } > > private static JmsOperations createJmsOperations(ConnectionFactory > connectionFactory) { > JmsTemplate jmsTemplate = new JmsTemplate(); > jmsTemplate.setConnectionFactory(connectionFactory); > jmsTemplate.setDefaultDestinationName(QUEUE_NAME); > jmsTemplate.setDeliveryPersistent(false); > jmsTemplate.setReceiveTimeout(1000); > > return jmsTemplate; > } > > private static void assertMessageSentByProducerIsReceivedByConsumer( > JmsOperations consumerJmsOperations, JmsOperations > producerJmsOperations) { > > producerJmsOperations.send( > new MessageCreator() { > @Override > public Message createMessage(Session session) throws > JMSException { > return session.createTextMessage(); > } > }); > assertNotNull(consumerJmsOperations.receive()); > } > } > > On May 5, 2010, at 12:42 PM, Geoffrey Arnold wrote: > > > Issued opened with failing test: > > > > https://issues.apache.org/activemq/browse/AMQ-2722 > > > > Attaching JUnit test here too: > > > > <NetworkOfBrokersTest.java> > > > > On Apr 6, 2010, at 5:10 AM, Dejan Bosanac wrote: > > > >> Hi, > >> > >> can you raise a Jira for this (ideally with a test case that > demonstrates > >> the problem). > >> > >> Cheers > >> -- > >> Dejan Bosanac - http://twitter.com/dejanb > >> > >> Open Source Integration - http://fusesource.com/ > >> ActiveMQ in Action - http://www.manning.com/snyder/ > >> Blog - http://www.nighttale.net > >> > >> > >> On Fri, Apr 2, 2010 at 11:16 PM, Geoffrey Arnold < > >> geoff...@geoffreyarnold.com> wrote: > >> > >>> Hi All! > >>> > >>> During upgrades we would like to be able to stop and restart the > network > >>> connector between embedded brokers running in separate VMs. > >>> > >>> In the embedded broker of the producer VM we have a network connector > >>> pointing to the transport connector of an embedded broker in the > consumer > >>> VM. I have attempted to use JMX to stop and restart the network > connector > >>> in the producer VM, however the connection does not appear to be > >>> reestablished. > >>> > >>> What is the correct way to stop and restart this connection? > >>> > >>> Thanks, > >>> Geoff. > > > >