Ok, great! Since I am using the Java DSL, I will take the first approach.
Is there a way to pool this object so that there are many instances and
performance is not degraded under high-load circumstances? (I have seen
thread() instructions in the Java DSL, but I am not sure whether these would
be applicable in my scenario).
Thanks.
Claus Ibsen wrote:
>
> Hi
>
> Camel has a service interface: org.apache.camel.Service with callbacks for
> start and stop = lifecycle. But I doubt that your processor will receive
> these callback.
>
> 1)
> If you don't use an anonymous inner class as processor you can just create
> your processor instance once, and then init the XML.
>
> In the camel route you can pass a reference to your object with
> .processRef()
>
> For example in your route builder (if using java):
> Processor myProcessor = new MyProcessor();
> myProcessor.myInit(); // init or do it in the constructor
>
> from("xxx").processRef(myProcessor).to("seda:yyy")...
>
>
> 2)
> If you are using Spring xml for lifecycle management then you can use
> spring to handle this and in the Camel route you can use
> .bean("mySpringBeanId") to invoke you bean where you can do you code as
> the processor did.
>
> When you use bean then you is able to be less dependent on Camel
> interfaces and in fact you can write it as a POJO with no imports for
> Camel. Camel will invoke your method.
>
> from("xxx").bean("mySpringBeanId").to("seda:yyy")...
>
> See wiki doc
> http://activemq.apache.org/camel/bean.html
>
>
>
>
>
> Med venlig hilsen
>
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: raulvk [mailto:[EMAIL PROTECTED]
> Sent: 11. september 2008 12:54
> To: [email protected]
> Subject: RE: Synchronous/asynchronous bridge
>
>
> Ok, got it half-working. Thanks!
>
> What I have actually done is I have created a private class inside that
> implements Processor, and I am using the .process() DSL instruction to run
> it through it.
>
> However, the problem I am facing now is that because the response is
> actually returned to a CXF endpoint via ServiceMix, this endpoint expects
> the message within an <jbi:message> ... </jbi:message> envelope.
>
> Therefore, the XML that I ought to send back is getting a bit more
> complex.
> I am thinking of loading the response XML from a file from the classpath.
> I
> could do this within the process() method, but this would keep loading and
> discarding the XML over and over again, right?
>
> Do processors have lifecycle methods, such that I can load the XML into
> memory once within an init() method?
>
> What solution do you suggest to only load the XML from the file into
> memory
> ONCE?
>
> Thank you!!
>
>
>
> Claus Ibsen wrote:
>>
>> Hi
>>
>> BTW: .transform is a new DSL in Camel 1.4. And since you are using
>> ServiceMix it might not be with the latest Camel release.
>>
>> You can then use .setOutBody instead
>>
>>
>> Med venlig hilsen
>>
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: Claus Ibsen [mailto:[EMAIL PROTECTED]
>> Sent: 11. september 2008 08:49
>> To: [email protected]
>> Subject: RE: Synchronous/asynchronous bridge
>>
>> Hi
>>
>> Yes this is possible. The solution is to use a queue where you "split"
>> the
>> request. You can use a JMS queue or a the SEDA queues that Camel has
>> out-of-the-box.
>> http://activemq.apache.org/camel/seda.html
>>
>> The transform DSL is used for setting the OUT body = the response to the
>> original caller.
>>
>>
>> Here is an example of such a scenariou. I have build a unit test to
>> demonstrate this:
>>
>> public void testSendAsync() throws Exception {
>> MockEndpoint mock = getMockEndpoint("mock:result");
>> mock.expectedBodiesReceived("Hello World");
>>
>> Object out = template.requestBody("direct:start", "Hello World");
>> assertEquals("OK", out);
>>
>> assertMockEndpointsSatisfied();
>> }
>>
>> @Override
>> protected RouteBuilder createRouteBuilder() throws Exception {
>> return new RouteBuilder() {
>> public void configure() throws Exception {
>> from("direct:start")
>> // send it to the seda queue that is async
>> .to("seda:next")
>> // return a constant response
>> .transform(constant("OK"));
>>
>> from("seda:next").to("mock:result");
>> }
>> };
>> }
>>
>>
>>
>>
>> Med venlig hilsen
>>
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>> -----Original Message-----
>> From: raulvk [mailto:[EMAIL PROTECTED]
>> Sent: 10. september 2008 19:56
>> To: [email protected]
>> Subject: Synchronous/asynchronous bridge
>>
>>
>> Hi,
>>
>> I am using Camel embedded in ServiceMix via the servicemix-camel service
>> engine.
>>
>> I need to implement the following routing scenario:
>>
>>
>> HTTP Consumer BC ---> Camel ---> Transformation --> HTTP Provider BC
>> /|\ |
>> |______________ |
>>
>>
>> Basically, I receive a SOAP request through an HTTP endpoint in
>> ServiceMix
>> and it gets directed to Camel. As soon as Camel receives it, it should
>> immediately return back a fixed response (<Response>OK</Response>), and
>> then
>> it should invoke an XSLT Transformer, and should finally send the
>> transformed message to the HTTP Provider.
>>
>> I am OK with the bit where I have to use a pipeline, but I don't
>> understand
>> how to return the response half-way through the routing flow.
>>
>> Could someone help me with this, please?
>>
>> Thanks a lot!
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Synchronous-asynchronous-bridge-tp19415072s22882p19415072.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Synchronous-asynchronous-bridge-tp19415072s22882p19432301.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>
--
View this message in context:
http://www.nabble.com/Synchronous-asynchronous-bridge-tp19415072s22882p19432640.html
Sent from the Camel - Users mailing list archive at Nabble.com.