activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mick Knutson <mknut...@baselogic.com>
Subject Re: How to create destinations after the start of embedded broker
Date Mon, 07 Sep 2009 12:47:42 GMT
Interesting topic. I started a blog, which is not complete, but has most of
the concepts for what you are looking for:
http://www.baselogic.com/blog/java/testing-activemq-virtualtopics-using-camel-and-junit

I have been working with the Camel and AMQ team on this, and I am close to
have a fully tested solution....

I have a FAT Client that has a Spring MDP, that I want to dynamically switch
the QUEUE destination at runtime.

Here is the unit test for the changing of destinations:

    @Test
    @DirtiesContext
    public void testChangeMessageDestination() throws Exception {
        log.info("Send a test message to Table Service");
        log.info("***** testChangeMessageDestination()
********************************");

        DefaultMessageListenerContainer container =
(DefaultMessageListenerContainer)context.getBean("jmsListener12");
        assertNotNull(container);
        assertTrue(container instanceof DefaultMessageListenerContainer);
        assertEquals("Consumer.12.VirtualTopic.Table.12",
container.getDestinationName());

        resultChangeMessageDestination.expectedMessageCount(0);

        // Send the test message to make Server Service create our Status
Message
        // Message to be sent to 'VirtualTopic.Table.1' , NOT
'VirtualTopic.Table.12'
        producerTemplate.sendBody("jms:queue:sendStatusUpdate",
                ExchangePattern.InOnly, 1);

        // now lets assert that the mock endpoint received messages
        resultChangeMessageDestination.assertIsSatisfied();
        resultChangeMessageDestination.reset();


        log.info("* valid message
received.---------------------------------");

        ActiveMQQueue newDestination = new
ActiveMQQueue("Consumer.12.VirtualTopic.Table.1");
        container.setDestination(newDestination);
       * resultChangeMessageDestination.expectedMinimumMessageCount(4);*

        // Send the test message to make Server Service create our Status
Message
        // Message to be sent to 'VirtualTopic.Table.1' , NOT
'VirtualTopic.Table.12'
        producerTemplate.sendBody("jms:queue:sendStatusUpdate",
                ExchangePattern.InOnly, 1);

        // now lets assert that the mock endpoint received messages
        resultChangeMessageDestination.assertIsSatisfied();
        resultChangeMessageDestination.reset();


        log.info("* no message received
again.---------------------------------");

        newDestination = new
ActiveMQQueue("Consumer.12.VirtualTopic.Table.BAD");
        container.setDestination(newDestination);
        resultChangeMessageDestination.expectedMinimumMessageCount(0);

        // Send the test message to make Server Service create our Status
Message
        producerTemplate.sendBody("jms:queue:sendStatusUpdate",
                ExchangePattern.InOnly, 1);

        // now lets assert that the mock endpoint received messages
        resultChangeMessageDestination.assertIsSatisfied();

    }


   - One of the biggest issues I can seem to understand, is why I get 4+
   messages onto the queue from my VirtualTopic.
   - I also have some doubts on either the way I am using the the Mocks, or
   the Mocks themselves as if I change the expected number of messages
   received, I stop getting any messages to those Mocks.
   - I also, can not seem to validate the changed name in the *
   container.getDestinationName()* call after I change the destination.




---
Thank You…

Mick Knutson, President

BASE Logic, Inc.
Enterprise Architecture, Design, Mentoring & Agile Consulting
p. (866) BLiNC-411: (254-6241-1)
f. (415) 685-4233

Website: http://baselogic.com
Linked IN: http://linkedin.com/in/mickknutson
Vacation Rental: http://tahoe.baselogic.com
---



On Mon, Sep 7, 2009 at 1:28 AM, niko_dim <nikk.sun@gmail.com> wrote:

>
> Hi,
>
>  I want to dynamically create destinations after startup of my embedded
> broker. I saw several examples how create ServiceBroker with configuration
> file but all configurations were done before start of the broker.
> Unfortunately this does not fit to the requirements of my project. I do not
> want to restart the broker or use createTopic() & createQueue() methods of
> the session.
> The broker that I am using is embedded and use of specific methods is not
> an
> issue.
>
> Thanks for the help.
>  Nikodim
> --
> View this message in context:
> http://www.nabble.com/How-to-create-destinations-after-the-start-of-embedded-broker-tp25326803p25326803.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>

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