Perhaps you can mark the route as inout. So the cxf from endpoint could get the response but of course does not have to reply.

I think for transacted routes we should make this the default. Can you open a jira issue for that?

Christian

Am 23.03.2012 09:49, schrieb Stefan Burkard:
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


--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com

Reply via email to