activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Geoffrey Arnold <geoff...@geoffreyarnold.com>
Subject Re: Programmatically stopping and restarting network connector
Date Mon, 10 May 2010 12:23:49 GMT
No problem, thanks Dejan!

On May 10, 2010, at 8:17 AM, Dejan Bosanac wrote:

> 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
View raw message