I just retested this, and the EXCEPTION_CAUGHT property is NOT on the exchange 
sent to onCompletion.onFailureOnly element.  

So my last question is - can I do something in the SyncronizationAdapter so 
that the onException elements will get triggered?

> On Sep 8, 2016, at 8:23 AM, Quinn Stevenson <qu...@pronoia-solutions.com> 
> wrote:
> 
> Thanks for the quick reply Claus -
> 
> I always use the hasOut() to figure out what message to work with in my 
> processors - I’m not sure why I missed it here the first time around.  I was 
> a little surprised about the out message being there (since I don’t 
> explicitly use one) - I thought I’d read that the out message was being 
> deprecated, but it looks like the core engine is using it in this case.  
> Anyway, it just reinforced my “always use hasOut” habit :-)
> 
> I’d seen that FAQ, but it’s talking about onException elements - I can’t get 
> the onException elements to fire.  The onCompletion.onCompleteOnly() and 
> onCompletion.onFailureOnly are getting fired when I expect, but the 
> onException element never gets called.
> 
> So does this FAQ apply to onCompletion.onFailureOnly as well?  I just need to 
> look for the EXCEPTION_CAUGHT property?  I thought I had, but I’ll re-test to 
> make sure.
> 
>> On Sep 8, 2016, at 7:41 AM, Claus Ibsen <claus.ib...@gmail.com 
>> <mailto:claus.ib...@gmail.com>> wrote:
>> 
>> On Thu, Sep 8, 2016 at 3:36 PM, Quinn Stevenson
>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> wrote:
>>> I made some progress with this.
>>> 
>>> In my SynchronizationAdapter, I had been calling 
>>> exchange.getIn().setHeader(…) - I’d never looked to see if there was an 
>>> “out” message.  Once I changed this to set the header on the out message, 
>>> the headers started showing up where I wanted them.
>>> 
>> 
>> You can use hasOut() to check if there is OUT message or not.
>> 
>>> Now I’m down to error handling.  If something goes wrong during the 
>>> acknowledgement, I can set an exception on the exchange and than the route 
>>> knows that the exchanged failed - I tested this with an 
>>> onCompletion.onFailureOnly element.
>>> 
>>> However, the exchanged passed to the onCompletion.onFailureOnly element 
>>> does NOT have the exception set - so I’m not sure how the route is supposed 
>>> to tell what happened. Do I need to do more than just set the exception on 
>>> the exchange?
>>> 
>> 
>> There is a FAQ about this
>> http://camel.apache.org/why-is-the-exception-null-when-i-use-onexception.html
>>  
>> <http://camel.apache.org/why-is-the-exception-null-when-i-use-onexception.html>
>> 
>>> Also, is there a way to get Camel’s error handling to kick-in after the 
>>> SyncronizationAdapter sets the exception on the exchange?
>>> 
>>>> On Sep 6, 2016, at 5:06 PM, Quinn Stevenson <qu...@pronoia-solutions.com 
>>>> <mailto:qu...@pronoia-solutions.com>> wrote:
>>>> 
>>>> I’m struggling with this, and I can’t seem to get what I’m after.
>>>> 
>>>> I added a SynchronizationAdapter (via addOnCompletion), but the exchange 
>>>> passed to the onComplete portion of the route still doesn’t have the 
>>>> headers I’m setting in the Syncronizationadapter.  I’ve tried setting the 
>>>> header in both the onAfterRoute and onComplete methods, but no luck.  The 
>>>> only place that seems to work is if I add the header in the onBeforeRoute 
>>>> method, but I don’t have enough information at that point to set the 
>>>> header correctly.
>>>> 
>>>> The other thing I’d tried previously that I thought would work was simply 
>>>> setting the headers in the Consumer, after it called 
>>>> getProcessor().process(exchange) - but that doesn’t work either.  I’m not 
>>>> sure why that doesn’t work - I set headers before I call 
>>>> getProcessor().process(exchange), and they behave as I’d expect.  However, 
>>>> anything I do to the exchange after I call 
>>>> getProcessor().process(exchange) doesn’t seem to have any effect?
>>>> 
>>>> Maybe I need to do something different than just call 
>>>> getProcessor().process(exchange)? Somehow intercept the flow of the 
>>>> exchange after the last processor in the route, but before before camel 
>>>> does whatever it does that makes my copy of the exchange irrelevant?
>>>> 
>>>> 
>>>>> On Sep 6, 2016, at 2:02 PM, Claus Ibsen <claus.ib...@gmail.com 
>>>>> <mailto:claus.ib...@gmail.com>> wrote:
>>>>> 
>>>>> There is an addOnCompletion on the exchange you can use. Then your
>>>>> onCompletion can implement that interface, or extend
>>>>> SynchronizationAdapter
>>>>> 
>>>>> On Tue, Sep 6, 2016 at 9:52 PM, Quinn Stevenson
>>>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> wrote:
>>>>>> Thank you for the prompt reply :-)
>>>>>> 
>>>>>> This sounds like exactly what I need, but I’m a little unclear about how 
>>>>>> to implement it.  I tried creating a UnitOfWork, adding a 
>>>>>> Synchronization, and then setting the UnitOfWork on the exchange when I 
>>>>>> create it, but my Synchronization isn’t getting called.
>>>>>> 
>>>>>> is there another component somewhere that does something similar that I 
>>>>>> could look at?
>>>>>> 
>>>>>> 
>>>>>>> On Sep 6, 2016, at 1:25 PM, Claus Ibsen <claus.ib...@gmail.com 
>>>>>>> <mailto:claus.ib...@gmail.com>> wrote:
>>>>>>> 
>>>>>>> If you talk about UoW completions with Synchronization:
>>>>>>> org.apache.camel.spi.Synchronization
>>>>>>> 
>>>>>>> Then you can implement Ordered, and then set the value to be HIGHEST
>>>>>>> so this one is run before the others.
>>>>>>> 
>>>>>>> 
>>>>>>> On Tue, Sep 6, 2016 at 9:20 PM, Quinn Stevenson
>>>>>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> 
>>>>>>> wrote:
>>>>>>>> I would like to enhance the camel-mllp component to set a message 
>>>>>>>> header containing the MLLP Acknowledgement when the component is 
>>>>>>>> automatically generating the acknowledgment.  This code would need to 
>>>>>>>> execute after the last element in the main route, but before any 
>>>>>>>> onCompletion elements are invoked, but I can’t figure out the right 
>>>>>>>> way to make this happen.
>>>>>>>> 
>>>>>>>> Can someone point me in the right direction?
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Claus Ibsen
>>>>>>> -----------------
>>>>>>> http://davsclaus.com <http://davsclaus.com/> @davsclaus
>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 
>>>>>>> <https://www.manning.com/ibsen2>
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Claus Ibsen
>>>>> -----------------
>>>>> http://davsclaus.com <http://davsclaus.com/> @davsclaus
>>>>> Camel in Action 2: https://www.manning.com/ibsen2 
>>>>> <https://www.manning.com/ibsen2>
>>>> 
>>> 
>> 
>> 
>> 
>> -- 
>> Claus Ibsen
>> -----------------
>> http://davsclaus.com <http://davsclaus.com/> @davsclaus
>> Camel in Action 2: https://www.manning.com/ibsen2 
>> <https://www.manning.com/ibsen2>

Reply via email to