Hi

I think CAMEL-2357 is what you are looking for
https://issues.apache.org/activemq/browse/CAMEL-2357

If you could take a look and maybe if you got some ideas or how you
would like the API to be to support your use-case.
There are some code snippets of my prototype in there.


On Wed, Jan 13, 2010 at 9:11 AM, Johan Haleby <[email protected]> wrote:
>
> 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 <[email protected]>
>>> 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.
>
>



-- 
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

Reply via email to