Multiple thread support -- pipelining

You can optionally allow a message channel agent (MCA) to transfer messages using multiple threads. This process, called pipelining, enables the MCA to transfer messages more efficiently, with fewer wait states, which improves channel performance. Each MCA is limited to a maximum of two threads.

You control pipelining with the PipeLineLength parameter in the qm.ini file. This parameter is added to the CHANNELS stanza:

PipeLineLength=1|number
This attribute specifies the maximum number of concurrent threads a channel will use. The default is 1. Any value greater than 1 will be treated as 2.

With WebSphere MQ for Windows(R), use the WebSphere MQ Services snap-in to set the PipeLineLength parameter in the registry. Refer to the WebSphere MQ System Administration Guide book for a complete description of the CHANNELS stanza.

Notes:
  1. PipeLineLength applies only to V5.2 or later products.
  2. Pipelining is effective only for TCP/IP channels.

When you use pipelining, the queue managers at both ends of the channel must be configured to have a PipeLineLength greater than 1.

Channel exit considerations

Note that pipelining can cause some exit programs to fail, because:

Check the design of your exit programs before you use pipelining:

Consider a message exit that opens a queue and uses its handle for MQPUT calls on all subsequent invocations of the exit. This fails in pipelining mode because the exit is called from different threads. To avoid this failure, keep a queue handle for each thread and check the thread identifier each time the exit is invoked.