Queue name resolution

This topic contains information about queue name resolution as performed by queue managers at both sending and receiving ends of a channel.

In larger networks, the use of queue managers has a number of advantages over other forms of communication. These advantages derive from the name resolution function in DQM and the main benefits are:
  • Applications do not need to make routing decisions
  • Applications do not need to know the network structure
  • Network links are created by systems administrators
  • Network structure is controlled by network planners
  • Multiple channels can be used between nodes to partition traffic
The following figure shows an example of queue name resolution. The figure shows two machines in a network, one running a put application, the other running a get application. The applications communicate with each other through the IBM® MQ channel, controlled by the MCAs. As far as the application is concerned, the process is the same as putting messages on a local queue.
Figure 1. Name resolution
This diagram is described in the surrounding text.
Referring to Figure 1, the basic mechanism for putting messages on a remote queue, as far as the application is concerned, is the same as for putting messages on a local queue:
  • The application putting the message issues MQOPEN and MQPUT calls to put messages on the target queue.
  • The application getting the messages issues MQOPEN and MQGET calls to get the messages from the target queue.

If both applications are connected to the same queue manager then no inter-queue manager communication is required, and the target queue is described as local to both applications.

However, if the applications are connected to different queue managers, two MCAs and their associated network connection are involved in the transfer, as shown in the figure. In this case, the target queue is considered to be a remote queue to the putting application.

The sequence of events is as follows:
  1. The putting application issues MQOPEN and MQPUT calls to put messages to the target queue.
  2. During the MQOPEN call, the name resolution function detects that the target queue is not local, and decides which transmission queue is appropriate. Thereafter, on the MQPUT calls associated with the MQOPEN call, all messages are placed on this transmission queue.
  3. The sending MCA gets the messages from the transmission queue and passes them to the receiving MCA at the remote computer.
  4. The receiving MCA puts the messages on the target queue, or queues.
  5. The getting application issues MQOPEN and MQGET calls to get the messages from the target queue.
Note: Only step 1 and step 5 involve application code; steps 2 through 4 are performed by the local queue managers and the MCA programs. The putting application is unaware of the location of the target queue, which could be in the same processor, or in another processor on another continent.

The combination of sending MCA, the network connection, and the receiving MCA, is called a message channel, and is inherently a unidirectional device. Normally, it is necessary to move messages in both directions, and two channels are set up for this movement, one in each direction.