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?

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?