Hi, Thank you very much your suggestion with event notifiers worked! But I hope the changes in 2.2 can make it even better since now the ExchangeCompletedEvent is sent several times (once per "from" in the route definition") and thus it's hard to know the count in the latch when you're not sure to which endpoint the users sends the first message.
Would you recommend using a snapshot of version 2.2 right now? (We'd also like to use Spring 3 in our project). /Johan Johan Haleby wrote: > > Hi, > > Thanks for your quick response. Sorry for not mentioning it in the > previous mail but I'm using Camel 2.1 just as you suspected. Unfortunately > the first solution you posted (using async send and latches) won't work > "out of the box" for me because the producer template is wrapped in an > anti-corruption layer and the test should use this anti-corruption layer > to send the message. > > I'll look into your suggestion by subscribing to the ExchangeDoneEvent. Is > there anywhere I can find some documentation or example of how to do this? > Or was it this that you went through in chapter 6 in the book? > > I look forward to the changes you mention in version 2.2, seems really > useful and looks to fit very well with what I'm trying to do here. Is > there an expected date when 2.2 may be available? > > Regards, > /Johan > > The first option won't work > > Claus Ibsen-2 wrote: >> >> On Tue, Jan 12, 2010 at 5:56 PM, Johan Haleby <johan.hal...@gmail.com> >> wrote: >>> >>> Hi, >>> >>> I'm configuring routes using the Java DSL and it works very well. >>> However >>> during testing I'd like to somehow hook into the end of an already >>> defined >>> route to add notification support. The reason is that in my test I'm >>> creating a message and pass it to a queue using Camel and this message >>> is >>> handled by a processor. After this processor has finished executing I'd >>> like >>> to receive some sort of notification but only during testing. The reason >>> is >>> that I'd like my test to wait until the processor has finished executing >>> in >>> my test case so that I can verify the result of the processor. For >>> example: >>> >>> public void test() { >>> 1. send a message to queue // just as you would in production >>> 2. wait for the processor to finish // this is where I'd like to get a >>> notification that the processor has finished so that it's ok to continue >>> to >>> the next step >>> 3. verify result >>> } >>> >>> The route may look something like: >>> from("jms:queue:myqueue).process(new MyProcessor()); // A simplification >>> of >>> the production route >>> >>> Is there a preferred way of doing this in Camel without changing the >>> code >>> making up the "production route"? Or is there a better way to achieve >>> it? >>> >> >> Chapter 6 in the book go over this issue and how to address that: >> http://www.manning.com/ibsen/ (will be updated in next MEAP due this >> month) >> >> However we made it easier to do nice and easy from an unit test in 2.2 >> which I assume is not the version of Camel you are using. >> In 2.2 you can advice and route by adding additional cross cutting >> concerns such as onCompletion, interceptors etc. which you would then >> be able to use to know when its done. >> >> In Camel 2.1 you got the EventNotification which you actually can use >> for that to get notified when an Exchange is done as it emits a >> ExchangeDoneEvent. >> I am currently improving that for 2.2 to let you filter out of the box >> the notifier so you only receive interesting events. But that should >> not hold you back from using that in 2.1. >> >> We may improve this situation even more to make it easy as it can get >> for testing production routes with test methods. So kinda inject mocks >> at end of routes etc. so you can use that to verify behavior etc. >> >> >>> /Johan >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Intercept-a-processor--tp27130672p27130672.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Author of Camel in Action: http://www.manning.com/ibsen/ >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> >> > > -- View this message in context: http://old.nabble.com/Intercept-a-processor--tp27130672p27140999.html Sent from the Camel - Users mailing list archive at Nabble.com.