Resolve Channel

The Resolve Channel (MQCMD_RESOLVE_CHANNEL) command requests a channel to commit or back out in-doubt messages. This command is used when the other end of a link fails during the confirmation stage, and for some reason it is not possible to reestablish the connection. In this situation the sending end remains in an in-doubt state, whether the messages were received. Any outstanding units of work must be resolved using Resolve Channel with either backout or commit.

Care must be exercised in the use of this command. If the resolution specified is not the same as the resolution at the receiving end, messages can be lost or duplicated.

This command can only be used for channels with a ChannelType value of MQCHT_SENDER, MQCHT_SERVER, or MQCHT_CLUSSDR.

Where there is both a locally defined channel and an auto-defined cluster-sender channel of the same name, the command applies to the locally defined channel.

If there is no locally defined channel but more than one auto-defined cluster-sender channel, the command applies to the last channel added to the repository on the local queue manager.


Required parameters

    ChannelName (MQCFST)
    Channel name (parameter identifier: MQCACH_CHANNEL_NAME).

    The name of the channel to be resolved. The maximum length of the string is MQ_CHANNEL_NAME_LENGTH.

    InDoubt (MQCFIN)
    Indoubt resolution (parameter identifier: MQIACH_IN_DOUBT).

    Specifies whether to commit or back out the in-doubt messages.

    The value can be:

      MQIDO_COMMIT
      Commit.

      MQIDO_BACKOUT
      Backout.


Optional parameters

    CommandScope (MQCFST)
    Command scope (parameter identifier: MQCACF_COMMAND_SCOPE). This parameter applies to z/OS only. Specifies how the command is executed when the queue manager is a member of a queue sharing group. We can specify one of the following:

    • blank (or omit the parameter altogether). The command is executed on the queue manager on which it was entered.
    • a queue manager name. The command is executed on the queue manager you specify, providing it is active within the queue sharing group. If you specify a queue manager name other than the queue manager on which it was entered, we must be using a queue sharing group environment, and the command server must be enabled.

    The maximum length is MQ_QSG_NAME_LENGTH.

    ChannelDisposition (MQCFIN)
    Channel disposition (parameter identifier: MQIACH_CHANNEL_DISP). This parameter applies to z/OS only.

    Specifies the disposition of the channels to be resolved.

    If this parameter is omitted, then the value for the channel disposition is taken from the default channel disposition attribute of the channel object.

    The value can be any of the following values:

      MQCHLD_PRIVATE
      A receiving channel is private if it was started in response to an inbound transmission directed to the queue manager.

      A sending channel is private if its transmission queue has a disposition other than MQQSGD_SHARED.

      MQCHLD_SHARED
      A receiving channel is shared if it was started in response to an inbound transmission directed to the queue sharing group.

      A sending channel is shared if its transmission queue has a disposition of MQQSGD_SHARED.

    The combination of the ChannelDisposition and CommandScope parameters also controls from which queue manager the channel is operated. The possible options are:

    • On the local queue manager where the command is issued.
    • On another specific named queue manager in the group.

    The various combinations of ChannelDisposition and CommandScope are summarized in Table 1

    ChannelDisposition CommandScope blank or local-qmgr CommandScope qmgr-name
    MQCHLD_PRIVATE Resolve private channel on the local queue manager Resolve private channel on the named queue manager
    MQCHLD_SHARED Resolve a shared channel on all active queue managers.

    MQCHLD_SHARED might automatically generate a command using CommandScope and send it to the appropriate queue manager. If there is no definition for the channel on the queue manager to which the command is sent, or if the definition is unsuitable for the command, the command fails.

    The definition of a channel on the queue manager where the command is entered might be used to determine the target queue manager where the command is run. Therefore, it is important that channel definitions are consistent. Inconsistent channel definitions might result in unexpected command behavior.

    Not permitted


Error codes

This command might return the following error codes in the response format header, in addition to the values shown in Error codes applicable to all commands.

    Reason (MQLONG)
    The value can be any of the following values:

      MQRCCF_CHANNEL_NOT_FOUND
      Channel not found.

      MQRCCF_INDOUBT_VALUE_ERROR
      In-doubt value not valid.

Parent topic: Definitions of the Programmable Command Formats