Hi Christian,
Thanks for the prompt reply. After discussion we have decided to go with
the temp-queue as suggested.
However, I have some clarification to make.
1. There are actually 2/3 camel-contexts running.
a. One of the camel-context is runnnig in an deployed EAR project,
that publishing to the "activemq:topic:request"
b. There is another server that is running a standalone
camel-context that is consuming from the "activemq:topic:request"
c. There is actually another camel-context (dummy) that's simply
consuming "activemq:topic:request", simulating a third client that will be
developed in future.
2. Therefore if camel context b and camel context c is down. I believe it
is still possible for camelcontext a to publish a message to the activeMQ
broker?
However is it possible for it to receive its JMSID, JMS Correlation ID, as I
believe being a durable topic, camel-context b and camel-context c will
receive the message once the are online again.
___________________________________________________________________________________________________________________
Currently after changing my current design, I am facing some issues with
TemporaryQueueReplyManager.
Note: The sequence that is received in route id="receiveRequest" is not
gurantee to be the same as the sequence returned from
route id="sendResponse". e.g.
I could be receiving 3 independent requests "ID 1", "ID 2", "ID 3" on
the receiveRequest, however route id "sendResponse", I might be receibing
"ID 2", "ID 1", "ID 3". Each of these 3 independent need to be replied to
its respective JMSReplyTo as it is coming from different web client.
<route id="receiveRequest">
<from uri="active:topic:request"/>
<to uri="log:foo"/>
<multicast>
<bean ref="eventProcessor" method="processEvent"/>
<bean ref="exchangeUtil" method="add"/>
<constant>JMSReplyTo</constant>
</setProperty>
<setProperty propertyName="JMSCorrelationID">
<constant>JMSCorrelationID</constant>
</setProperty>
<bean ref="strategyManager"
method="isStrategyComplete(${property.result})"/>
<choice>
<when>
<simple>${body}</simple>
<bean ref="camelJMS"
method="requestCompleted(${property.result})"/>
<setHeader>
<method ref=exchangeUtil"
method="get(${property.result},${property.JMSReplyTo})"/>
</setHeader>
<setHeader>
<method ref=exchangeUtil"
method="get(${property.result},${propertyJMSCorrelationID})"/>
</setHeader>
<to uri="log:foo"/>
</when>
</choice>
</route>
Qn :
1. How do I make sure I'm replying to the correct JMSReplyTo in a more
intelligent manner?
2. I am also facing a Timeout on TemporaryQueueReplyManager as the Out
Message exceed 20000millisecond.
However shortly, i am getting an WARNING that a response was received
but of unknown CorrelationID.
Is it possible to remove the timeout limit as I might need to wait as
long as 7 hours for a reply before Route 2 is triggered.
I hope there wont be a blocking call between route id="receiveRequest"
and route id="sendResponse", and could handle any incoming messages.
Will appreciate any advise, or kindly point out any of the misconception
that I had.
Thanks and Best Regards,
Zuff
--
View this message in context:
http://camel.465427.n5.nabble.com/Best-Practise-for-Dynamic-Topic-in-Ear-Project-tp5720288p5720726.html
Sent from the Camel - Users mailing list archive at Nabble.com.