Hi Shradha
First of all, please subscribe to the mailing lists [1] before posting,
to receive our replies.. I have manually copied this reply directly to
you this ti
We have a jms based asynchronous service which we want to expose as a
web service via Http transport.
So I am using Synapse as a proxy which accepts http requests from a web
service client and invokes my jms service.
The problem I face is when synapse makes a call to my jms service, it
waits for the response on a temporary queue, only for 30 sec.
Since my service is asynchronous it does not send a reply back within 30
sec, resulting in synapse deleting the temporary queue and sending a
timeout response to the client.
(My web service client is asynchronous)
I am using synapse 1.2. I tried setting the replyTo transport parameter
to a permanent queue in synapse.xml, but the message my jms service
recieves always has the replyTo set to the temporary queue.
I hope I have explained my problem statement clearly.
Can anybody suggest me a a possible way to achieve my objective?
What you need would be two proxy services to process the messages in the
different directions. When processing the client request with WS-A, you
need to extract the ReplyTo and make it available when processing the
asynchronous response. One scalable and simple solution is to put this
as a JMS header to the ultimate back end service, and expect it to put
it back as a JMS header, when it posts the response to the JMS reply
destination.
Then you could have another proxy service listening on the reply JMS
destination, and then read the JMS header which contains the clients
ReplyTo, and send the message to that [http] destination. You could
alternatively use a DB table, in-memory hash map etc to store the WS-A
ReplyTo - and you could select an appropriate method depending on your
environment, and other architectural requirements expected.
cheers
asankha
[1] http://synapse.apache.org/mail-lists.html
--
Asankha C. Perera
http://adroitlogic.org
http://esbmagic.blogspot.com