My problem seems to be that, with MEP InOnly, a CXF endpoint consuming
from a queue does not "see" an exception that occurs later in the
route and therefore commits the consumptions to the queue.

Does anybody know how I can make this exception visible to CXF? I
think this should be possible, otherwise it would not be possible to
read asynchronous and transacted with CXF from a queue.

Thanks
Stefan


On Wed, Mar 21, 2012 at 17:26, Stefan Burkard <sburk...@gmail.com> wrote:
> Hi Willem
>
> I suspected something like this - I am a Camel beginner and therefore
> didn't know if this is a bug or a feature :-)
>
> My case is to make the following routes transactional:
> 1. I am consuming messages with a CXF bean endpoint from an ActiveMQ
> queue to get an unmarshalled Exchange (the producer sends - fire and
> forget - SOAP messages with mtom attachments to the queue)
> 2. I am sending the Exchanges with ".to(direct:...)" to the main route
> of my module
> 3. The main route processes the Exchanges
>
> To check how these routes behave under error conditions, I am
> injecting intentionally an exception into the direct-endpoint
> (to"direct:...") of the first route. Therefore I am getting (as
> expected) the exception and afterwards the queue is empty. This means
> my route is not secured against message loss. If I understand you
> correctly, the exception that occurs during route-processing is not
> recoginsed by the CXF-consumer and therefore the consumer commits the
> message consumption to the queue.
>
> So, how can I make this asynchronous SOAP over JMS usecase
> transactional so that the message remains in the queue if an error
> occurs during route processing?
>
> Thanks for your help
> Stefan
>
>
> On Wed, Mar 21, 2012 at 14:23, Willem Jiang <willem.ji...@gmail.com> wrote:
>> If you are using inOnly MEP, camel-cxf producer will not know any thing
>> about the exception.
>> I'm not sure what kind of error that you get.
>>
>>
>>
>> On 3/21/12 5:54 PM, Burkard Stephan wrote:
>>>
>>> Hello
>>>
>>> I try to get running a SOAP over JMS usecase with the configuration
>>> outlined here:
>>> http://camel.apache.org/better-jms-transport-for-cxf-webservice-using-ap
>>> ache-camel.html
>>> <http://camel.apache.org/better-jms-transport-for-cxf-webservice-using-a
>>> pache-camel.html>
>>>
>>> My webservice is InOnly, it does not respond to requests. The client
>>> therefore sends SOAP messages to a queue without waiting for an answer.
>>> On the server side camel consumes the messages.
>>>
>>> I tried to test transaction behaviour of my camel routes with unittests
>>> where I advice the route with exceptions that occur at specific
>>> entpoints. This works fine when I consume from the queue directly
>>> (activemq:queue:...). If an error occurs the message is not commited and
>>> it stays in the queue.
>>> When I use a CXF endpoint to consume messages (cxf:bean:...), messages
>>> are lost when an exception occurs. They seem to be commited in activemq
>>> before or despite an error occurs.
>>> Therefore I tried to read first from the queue directly, forward the
>>> message to a direct endpoint and consume the messages with CXF from the
>>> direct endpoint. But in this case the message is also lost if an error
>>> occurs after consuming the message with CXF.
>>>
>>> Before posting routes and configuration details, I just would like to
>>> know if this is "normal" behaviour of the CXF endpoint with inOnly MEP
>>> or if the messages should stay in the queue as I expect?
>>>
>>> Perhaps this is the same problem as described in this thread:
>>> http://camel.465427.n5.nabble.com/CXF-Camel-JMS-Endpoint-exception-handl
>>> ing-td4471175.html
>>> <http://camel.465427.n5.nabble.com/CXF-Camel-JMS-Endpoint-exception-hand
>>> ling-td4471175.html>  ?
>>>
>>> Thanks for your help
>>> Stefan
>>>
>>
>>
>> --
>> Willem
>> ----------------------------------
>> FuseSource
>> Web: http://www.fusesource.com
>> Blog:    http://willemjiang.blogspot.com (English)
>>         http://jnn.javaeye.com (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang

Reply via email to