camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <>
Subject Re: Intercept a processor?
Date Wed, 13 Jan 2010 16:26:42 GMT

I think CAMEL-2357 is what you are looking for

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 <> 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 <>
>>> 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:
>>> (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:
>>>> Sent from the Camel - Users mailing list archive at
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>> Author of Camel in Action:
>>> Open Source Integration:
>>> Blog:
>>> Twitter:
> --
> View this message in context:
> Sent from the Camel - Users mailing list archive at

Claus Ibsen
Apache Camel Committer

Author of Camel in Action:
Open Source Integration:

View raw message