Microsoft Transaction Server

No additional configuration is required before we can use MTS as a transaction manager. However, there are some points to note.

Note the following information about using MTS with the extended transactional client:

  • An MTS application always starts an MQI channel when it connects to a server queue manager. MTS, in its role as a transaction manager, then uses the same MQI channel to communicate with the queue manager.
  • Following a failure, MTS must be able to recover any incomplete units of work. To do this, MTS must be able to communicate with any queue manager that was participating in an incomplete unit of work at the time of the failure.

    When an MTS application connects to a server queue manager and starts an MQI channel, the extended transactional client extracts sufficient information from the parameters of the MQCONN or MQCONNX call to enable the channel to be restarted following a failure, if required. The extended transactional client passes the information to MTS, and MTS records the information in its log.

    If the MTS application issues an MQCONN call, this information is simply the name of the queue manager. If the MTS application issues an MQCONNX call and provides a channel definition structure, MQCD, the information also includes the name of the MQI channel, the network address of the server queue manager, and the communications protocol for the channel.

    In a recovery situation, MTS passes this information back to the extended transactional client, and the extended transactional client uses it to restart the MQI channel.

    If you ever need to change any configuration information, therefore, ensure that all incomplete units of work have been resolved before making the changes. Alternatively, ensure that the configuration changes do not affect the ability of the extended transactional client to restart an MQI channel using the information recorded by MTS. Here are examples of such configuration changes:

    • Change the value of the MQSERVER environment variable
    • Change entries in the client channel definition table (CCDT)
    • Delete a server connection channel definition
  • Note the following conditions when using an extended transactional client with MTS:

    • Within a single thread, a client application can be connected to only one queue manager at a time.
    • Each thread of a client application can connect to a different queue manager.
    • A client application cannot use shared connection handles.