I have been asking opinions here about how to solve this issue, which is where I came up with this.
I need each consumer to get a copy of the message. I assumed that Virtual Topics are Durable right? The reason I use AOP, is to be able to test. I looked at the AMQ VirtualTopic test, but that was not going to use MDP's as suggested. So I was unable to use that test as a model. But AOP seemed straight forward in that I just created a wiretap of sorts. I guess my confusion is that from the stack, it appears that all components involved get a message except the Mock. The MDP, then the AOP Processor, then the seda queue, then the inline Route Processor, and I assume when the Route Processor completes, then the message is automatically routed to the next ".to(mock:xyz)" which is my Mock Client. So, besides the Tracer() you mentioned (thanks btw), is there anything else that might help me to maybe debug walk through that next ".to(mock:xyz)" forward? --- 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 Wed, Aug 26, 2009 at 8:16 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > On Tue, Aug 25, 2009 at 7:41 PM, Mick Knutson<mknut...@baselogic.com> > wrote: > > I started to create a blog to talk about what I am trying to do. I also > talk > > about the current issues I have for testing. > > > > > http://www.baselogic.com/blog/java/testing-activemq-virtualtopics-using-camel-and-junit > > > > > > Nice blog. > > Anyway I will suggest to start simple and do not use AOP, spring > testing etc. to get a simple test working as you want. > Then grow from there. > > And are you sure that the virtual topic works as you want, sounds as > if there are competing consumers. Are the topic durable so you are > guaranteed that every subscriber gets a copy? > > Maybe try a test without this virtual topic and try with a regular > durable topic and / or a few queues to get the hang on it. > > > > > > --- > > 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, Aug 24, 2009 at 9:47 AM, Mick Knutson <mknut...@baselogic.com > >wrote: > > > >> I appreciate your observation, as all too often the net is, and can be > >> misinterpreted. Again, please accept my apology. > >> > >> I am currently writing something more formal, that I will be able to use > >> now, and going forward, and again, I respectfully appreciate everyone's > help > >> and time. > >> > >> --- > >> 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, Aug 24, 2009 at 9:40 AM, Claus Ibsen <claus.ib...@gmail.com > >wrote: > >> > >>> Hi > >>> > >>> Thanks for understanding. > >>> > >>> And I may have been a bit harsh but its just to easy to write and > >>> press the send button :) > >>> Lets start over when we got a better understanding what you want to do > >>> so we can give better advice. > >>> > >>> And btw I am not a moderator or hold any special privileges or > >>> anything at this mailinglist. > >>> What I did write was my personal observations. > >>> > >>> > >>> On Mon, Aug 24, 2009 at 3:04 PM, Mick Knutson<mknut...@baselogic.com> > >>> wrote: > >>> > 1. I am going to create a blog as I promised, and I am going to start > >>> > writing it this minute to help describe the entire picture and all > the > >>> piece > >>> > involved. Sorry I have not done this before. > >>> > > >>> > 2. I feel incredibly _bad_ that I have ever come across as yelling > >>> > _ever_.... I would have never consciously done so, and am extremely > >>> grateful > >>> > for your help. Again, very, very sorry... > >>> > > >>> > > >>> > > >>> > --- > >>> > 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, Aug 24, 2009 at 3:20 AM, Claus Ibsen <claus.ib...@gmail.com> > >>> wrote: > >>> > > >>> >> Hi > >>> >> > >>> >> Maybe you should start over and explain to us what you want to test? > >>> >> > >>> >> Its not easy / motivating to help when people shout and post all > kind > >>> >> of code and expecting the community to use time / take time to dig > >>> >> into a haystack. > >>> >> Sorry I could not resist stating this. > >>> >> > >>> >> So I suggest to start easy and create a small unit test and maybe > >>> >> instead of JMS try out with pure seda to get the hang of the mock > >>> >> endpoints and how to use them. Then later write unit tests based on > >>> >> JMS. > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> On Mon, Aug 24, 2009 at 8:55 AM, Willem Jiang< > willem.ji...@gmail.com> > >>> >> wrote: > >>> >> > Hi > >>> >> > > >>> >> > I still don't know how do you send the message to > >>> "seda:resultClient1", > >>> >> > "seda:resultClient2" etc. > >>> >> > BTW > >>> >> > > >>> >> > "seda:resultClient1" is not the same endpoint of > "mock:resultClient1" > >>> >> > > >>> >> > Willem > >>> >> > Mick Knutson wrote: > >>> >> >> > >>> >> >> There is only 1 test right now, but I added: > >>> >> >> > >>> >> >> @Before > >>> >> >> public void testBefore() throws Exception { > >>> >> >> log.info("*** Before ***"); > >>> >> >> //assertNotNull(context); > >>> >> >> > >>> >> >> resultClient1.reset(); > >>> >> >> resultClient2.reset(); > >>> >> >> resultClient3.reset(); > >>> >> >> resultClient4.reset(); > >>> >> >> //resultAllClients.reset(); > >>> >> >> } > >>> >> >> > >>> >> >> already. But I sent another mail a second ago about the tracer. > >>> >> >> > >>> >> >> The strange issue is not getting too many message, but the FIRST > >>> mock > >>> >> just > >>> >> >> not getting any messages. > >>> >> >> > >>> >> >> I have even played with commenting out client 1, then I get > client 2 > >>> >> stops > >>> >> >> getting message randomly. I say randomly, because I have had the > >>> test > >>> >> >> working, then I change nothing. But I try to run through 10+ > >>> iterations > >>> >> >> through the same test. It will work for several, then just stop. > >>> Then it > >>> >> >> might start again. if I keep going, but most of the time not. > >>> >> >> > >>> >> >> I am looking for a pattern to deduce the issue, but it is > alluding > >>> me. > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> --- > >>> >> >> 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 Sun, Aug 23, 2009 at 6:14 AM, Willem Jiang > >>> >> >> <willem.ji...@gmail.com>wrote: > >>> >> >> > >>> >> >>> Mick Knutson wrote: > >>> >> >>> > >>> >> >>>> I have a unit test that has a wiretap that routes the message > to a > >>> >> mock > >>> >> >>>> endpoint. > >>> >> >>>> Here is what works: > >>> >> >>>> > >>> >> >>>> @EndpointInject(uri = "mock:resultAllClients") > >>> >> >>>> protected MockEndpoint resultAllClients; > >>> >> >>>> > >>> >> >>>> @EndpointInject(uri = "mock:resultClient1") > >>> >> >>>> protected MockEndpoint resultClient1; > >>> >> >>>> @EndpointInject(uri = "mock:resultClient2") > >>> >> >>>> protected MockEndpoint resultClient2; > >>> >> >>>> @EndpointInject(uri = "mock:resultClient3") > >>> >> >>>> protected MockEndpoint resultClient3; > >>> >> >>>> @EndpointInject(uri = "mock:resultClient4") > >>> >> >>>> protected MockEndpoint resultClient4; > >>> >> >>>> > >>> >> >>>> @Test > >>> >> >>>> public void testSendBetMessage() throws Exception { > >>> >> >>>> log.info("Send a test message to Table Service"); > >>> >> >>>> > >>> >> >>>> //resultAllClients.expectedMinimumMessageCount(3); > >>> >> >>>> resultClient1.expectedMessageCount(1); > >>> >> >>>> resultClient2.expectedMessageCount(1); > >>> >> >>>> //resultClient3.expectedMessageCount(1); > >>> >> >>>> //resultClient4.expectedMessageCount(1); > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> // Send the test message to make Server Service create > our > >>> >> Status > >>> >> >>>> Message > >>> >> >>>> producerTemplate.sendBody("jms:queue:bets", > >>> >> >>>> ExchangePattern.InOnly, 22); > >>> >> >>>> > >>> >> >>>> // now lets assert that the mock endpoint received > messages > >>> >> >>>> resultClient1.assertIsSatisfied(); > >>> >> >>>> resultClient2.assertIsSatisfied(); > >>> >> >>>> //resultClient3.assertIsSatisfied(); > >>> >> >>>> //resultClient4.assertIsSatisfied(); > >>> >> >>>> > >>> >> >>>> //resultAllClients.assertIsSatisfied(); > >>> >> >>>> log.info("XXXXXXXXXX DONE > >>> >> >>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); > >>> >> >>>> > >>> >> >>>> } > >>> >> >>>> > >>> >> >>>> /*...@after > >>> >> >>>> public void finalizeTests() { > >>> >> >>>> // resultAllClients.reset(); > >>> >> >>>> resultClient1.reset(); > >>> >> >>>> resultClient2.reset(); > >>> >> >>>> resultClient3.reset(); > >>> >> >>>> // resultClient4.reset(); > >>> >> >>>> }*/ > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> This is in 1 unit test class and the way it is above has all > >>> >> assertions > >>> >> >>>> pass. > >>> >> >>>> If any of the following things change, I get: > >>> >> >>>> > >>> >> >>>> java.lang.AssertionError: mock://resultClient1 Received message > >>> count. > >>> >> >>>> Expected: <1> but was: <0> > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> 1. If I uncomment the finalizeTests() method, the error starts. > >>> >> >>>> > >>> >> >>> Since the mock endpoints are injected into your unit test, if > there > >>> are > >>> >> >>> more than one unit test method , you need to reset the mock > >>> endpoints > >>> >> to > >>> >> >>> make sure the message count values are right. > >>> >> >>> > >>> >> >>> > >>> >> >>>> 2. If I uncomment resultClient3, resultClient4 it might start > >>> working, > >>> >> >>>> then > >>> >> >>>> randomly it will show up again and I have to comment them out > in > >>> order > >>> >> >>>> for > >>> >> >>>> the test to pass again. > >>> >> >>>> > >>> >> >>> I don't know how your mock:resultClient3, mock:resultClient4 can > >>> >> receive > >>> >> >>> the message from the route file that you showed me. > >>> >> >>> > >>> >> >>> > >>> >> >>> > >>> >> >>>> Is there some bug/defect in the Mock that I have not googled? > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> > >>> >> >>>> --- > >>> >> >>>> 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 > >>> >> >>>> --- > >>> >> >>>> > >>> >> >>>> > >>> >> >>> Willem > >>> >> >>> > >>> >> >> > >>> >> > > >>> >> > > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> Claus Ibsen > >>> >> Apache Camel Committer > >>> >> > >>> >> Open Source Integration: http://fusesource.com > >>> >> Blog: http://davsclaus.blogspot.com/ > >>> >> Twitter: http://twitter.com/davsclaus > >>> >> > >>> > > >>> > >>> > >>> > >>> -- > >>> Claus Ibsen > >>> Apache Camel Committer > >>> > >>> Open Source Integration: http://fusesource.com > >>> Blog: http://davsclaus.blogspot.com/ > >>> Twitter: http://twitter.com/davsclaus > >>> > >> > >> > > > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus >