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 12:17:21 GMT
Hi Geoff,

I meant everything OK in the Jira. I still didn't managed to look at the
test. Sorry for confusion.

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 Mon, May 10, 2010 at 2:07 PM, Geoffrey Arnold <
geoffrey@geoffreyarnold.com> wrote:

> Hi Dejan,
>
> If you run the test, the second assertion (right before the finally block)
> fails.  Could you clarify what you mean by "everything is ok"?
>
> Thanks,
> Geoff.
>
> On May 10, 2010, at 3:08 AM, Dejan Bosanac wrote:
>
> > 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