Hi Willem, Thanks for your response.
Is there a way to use camel-cxf without blocking the calling thread? In SMX, in-memory correlationId-to-messageExchange maps are used to avoid these synchronous, blocked-thread scenarios. Am I able to configure async processors in Camel to achieve similar behavior w/camel-cxf? - Ron willem.jiang wrote: > > Hi Ron, > > After digging the code , CXF's JMS transport[1] > conduit.handleResponse()[2] will block the thread when it waits for the > reply. > In camel-jms[3] which can be used as camel-transport for CXF[4], the > template takes care of the message receiving work and the main thread > uses future (JmsProducer.process()[5])to correlates the request and > response. > > There is no much difference between the CXF's JMS transport and > camel-jms from the camel-cxf side, since the calling thread is blocked > when it waits for the response whether it uses future or not. > > [1]http://cwiki.apache.org/CXF20DOC/jms-transport.html > [2]https://svn.apache.org/repos/asf/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java > [3]http://cwiki.apache.org/CAMEL/jms.html > [4]http://cwiki.apache.org/CAMEL/camel-transport-for-cxf.html > [5]https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java > > Willem > > rgavlin wrote: >> Hi Willem, >> >> Let me try to rephrase my question. >> >> When camel-cxf sends its in-out jms request to an external service, does >> it >> lock that thread while it waits for the reply? Or is the incoming request >> thread released and another pool of threads used to monitor the temporary >> replyTo queue and automatically correlate the request/response before >> returning the message exchange to the caller? I believe the smx-cxf-bc >> async >> provider does the latter which is my desired behavior. Does camel-cxf >> provide similar functionality? If so, how would it be configured? >> >> - Ron >> >> >> willem.jiang wrote: >> >>> Hi Ron, >>> >>> I went through the unit test in SM-1413, it only shows how to invoke the >>> service with ServiceMix client API. >>> Since camel-cxf component only interact with SMX by servicemix-camel >>> component, camel-cxf can't see any ServiceMix client invoke. >>> If you want to invoke the external web service by using jms transport in >>> camel-cxf , you just need to set the transport factory to jms. >>> >>> There is a unit test[1] in camel to show how to use camel transport in >>> CXF , please check it out . >>> >>> [1] >>> https://svn.apache.org/repos/asf/activemq/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations >>> The configuration files >>> [2] >>> https://svn.apache.org/repos/asf/activemq/camel/trunk/tests/camel-itest/src/test/resources/spring-config >>> >>> Willem >>> rgavlin wrote: >>> >>>> I currently use a servicemix-cxf-bc "provider" to asynchronously send >>>> an >>>> in-out mep to an external web service using the jms transport. See >>>> https://issues.apache.org/activemq/browse/SM-1413 for a test that >>>> demonstrates this capability. >>>> >>>> I would also like to use the camel-cxf component in a similar fashion. >>>> Does >>>> camel-cxf provide an asynchronous processor to send an in-out mep to an >>>> external web service using the jms transport? If so, how is this >>>> configured? >>>> >>>> Thanks, >>>> >>>> - Ron >>>> >>>> >>> >>> >> >> > > > -- View this message in context: http://www.nabble.com/camel-cxf-async-processor-w-in-out-mep-using-jms-transport-tp19065612s22882p19101667.html Sent from the Camel - Users mailing list archive at Nabble.com.
