activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dejan Bosanac <de...@nighttale.net>
Subject Re: Programmatically stopping and restarting network connector
Date Mon, 10 May 2010 07:08:06 GMT
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 <geoffrey@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 <
> >> geoffrey@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.
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message