The following figure shows an example where three clients, A, B, and C send messages to the MSMQ server on their machine.
MSMQ forwards the messages to the MSMQ machine that is hosting the queue, which then stores the messages. The messages are stored in memory or disk, depending on how the queue is set up. The message queue might be on the same machine as the clients, or on a different machine.
The Remote Access servers have a socket connection open to the machine that hosts the Message Queue Connector (MQC) server. The MQC server passes messages to and from the MSMQ server and the Remote Access servers.
The Remote Access servers poll the message queue looking for any messages on the request queue. When a message is found, it is picked up by the Remote Access server, reformatted into a NOF message and sent to the Agile Business Suite Runtime system.
When the reply is returned from the Runtime system to the Remote Access server, the NOF message is reformatted into a message and sent to the reply queue identified in the corresponding request message header and the Remote Access server processes its next message.
The client, on the other hand, polls its reply queue looking for response messages. When they are available, it needs to order them and process them. Messages might arrive in any order, as there might be multiple message paths from one machine to another.
In practice, the machine hosting the message queues usually be the same one that the MQC server is running on. This means that message order is not be affected.
This eliminates the individual TCP/IP sockets for each client. However, you need to use the EnvoyMQ (formerly the GenevaMQ or FalconMQ) bridge client. This opens a single TCP/IP socket to a Windows system running MQC and MSMQ. There is one TCP/IP socket for each Remote Access server.
Refer to the specific host sections of the Agile Business Suite Remote Access Server Guide for more information on Remote Access server configuration.