How does Request Reply work in Routes when the request message goes to a queue in one TIBCO Enterprise Message Service (EMS) server and a reply message is expected to come back from another EMS server?
book
Article ID: KB0085354
calendar_today
Updated On:
Products
Versions
TIBCO Enterprise Message Service
-
Not Applicable
-
Description
Resolution: Description: ============
EMS takes care of routing the temp queue (response queue) in case of request reply in a single hop. Assume there are two EMS servers, EMS-A and EMS-B. An application is sending a request which is routed from EMS-A to EMS-B. This Solution covers the steps followed by EMS servers during this situation.
Environment: ===========
All O/S and H/W TIBCO Enterprise Message Service (EMS) – All versions.
Resolution: ==========
Assume that EMS server EMS-A is running on machine A and EMS-B is running on machine B. Routing has been enabled between EMS-A and EMS-B and a global queue queue.sample is defined on EMS-A as well as a global queue queue.sample@EMS-A is defined on server B.
A Requestor application is connecting to EMS-A and publishing messages on queue.sample and a Replier application is connecting to EMS-B and receiving messages from queue.sample.
Here is the process sequence during the routing.
1). The Requestor creates a message, create a temporary queue like $TMP$.EMS-A.XXXX.YYYY on EMS-A and sets the JMSREplyTo field of the message to $TMP$.EMS-A.XXXX.YYYY. Then it sends the messages to queue.sample on EMS-A and creates a receiver on temp queue $TMP$.EMS-A.XXXX.YYYY.
2). The Replier creates a receiver to the queue.sample on EMS-B. When it receives the message a temporary queue with the same name as the JMSReplyToField of this message (i.e. $TMP$.EMS-A.XXXX.YYYY) is created on the server EMS-B.
3). The Replier creates a reply message and sends it back on the temp queue $TMP$.EMS-A.XXXX.YYYY on the server EMS-B.
4). The reply message is automatically routed to the temp queue $TMP$.EMS-A.XXXX.YYYY on server EMS-A.
5). Once the reply message is routed, the temporary queue $TMP$.EMS-A.XXXX.YYYY on server EMS-B is automatically removed.
6). The Requestor on EMS-A receives the reply message on the temp queue TMP$.EMS-A.XXXX.YYYY. The temporary queue TMP$.EMS-A.XXXX.YYYY on EMS-A is then removed.
There was a bug (EMS-3823) that used to exist in earlier versions of EMS due to which the step 5 was not working correctly. The EMS server on the replier side used to accumulate the temporary queues. This has been fixed in EMS 6.1.0.
-------Excerpt from the release notes of EMS 6.1.0------ EMS-3823: Fixed a problem that prevented temporary reply to queues from being removed after messages were routed to the routing partner. ------------------------------------------------------------------
Issue/Introduction
How does Request Reply work in Routes when the request message goes to a queue in one TIBCO Enterprise Message Service (EMS) server and a reply message is expected to come back from another EMS server?