Working with auto-defined cluster-sender channels

After you introduce a queue manager to a cluster by making its initial CLUSSDR and CLUSRCVR definitions, IBM® MQ automatically makes other cluster-sender channel definitions when required to move messages to another queue manager in the cluster. You can view information about auto-defined cluster-sender channels, but you cannot modify them. To modify their behavior, you can use a channel auto-definition exit.

Before you begin

For an introduction to auto-defined channels, see Auto-defined cluster-sender channels.

About this task

Auto-defined cluster-sender channels are created by the cluster as and when needed, and they remain active until they are shut down using the normal disconnect-interval rules.

Cluster sender channels (CLUSSDRs) can be auto-defined both to move application messages and internal cluster administration messages. For example, in a Publish/subscribe cluster (one in which a clustered topic has been defined), channels can be defined between partial repositories to permit exchange of 'proxy subscription' state. When not required (inactive) for an extended period of time auto-defined CLUSSDRs are removed from a partial repository's cache of cluster information and are no longer visible on that queue manager.

[UNIX, Linux, Windows, IBM i]On Multiplatforms, the OAM (object authority manager) is not aware of the existence of auto-defined cluster-sender channels. If you issue start, stop, ping, reset, or resolve commands on an auto-defined cluster-sender channel, the OAM checks to see whether you are authorized to perform the same action on the matching cluster-receiver channel.

[z/OS]On z/OS®, you can secure an auto-defined cluster-sender channel in the same way as any other channel.

Procedure

  • Display information about the auto-defined channels for a given cluster queue manager.
    You cannot see automatically defined channels using the DISPLAY CHANNEL runmqsc command. To see the auto-defined channels use the following command:
    
    DISPLAY CLUSQMGR(qMgrName)
    
  • Display the status of the auto-defined channel for a given CLUSRCVR.
    To display the status of the auto-defined CLUSSDR channel corresponding to a CLUSRCVR channel definition you created, use the following command:
    
    DISPLAY CHSTATUS(channelname)
    
  • Use a channel auto-definition exit to modify the behavior of an auto-defined channel.

    You can use the IBM MQ channel auto-definition exit if you want to write a user exit program to customize a cluster-sender channel or cluster-receiver channel. For example, you can use the channel auto-definition exit in a cluster environment to make any of the following modifications:

    • Tailor communications definitions, that is, SNA LU6.2 names.
    • Add or remove other exits, for example, security exits.
    • Change the names of channel exits.

      The name of the CLUSSDR channel exit is auto-generated from the CLUSRCVR channel definition, and therefore might not be appropriate for your needs - especially if the two ends of the channel are on different platforms.

      The format of exit names is different on different platforms. For example:
      • [z/OS]On the z/OS platform, the format of the SCYEXIT (security exit name) parameter is SCYEXIT('SECEXIT')
      • [Windows]On Windows platforms, the format of the SCYEXIT (security exit name) parameter is SCYEXIT(' drive:\path\library (secexit)')
      [z/OS]Note: If there is no channel auto-definition exit, the z/OS queue manager derives the CLUSSDR channel exit name from the CLUSRCVR channel definition on the other end of the channel. To derive the z/OS exit name from a non-z/OS name, the following algorithm is used:
      • Exit names on Multiplatforms are of the general form path/library (function).
      • If function is present, up to eight chars of that are used.
      • Otherwise, up to eight chars of library are used.
      For example:
      • /var/mqm/exits/myExit.so(MsgExit) converts to MSGEXIT
      • /var/mqm/exits/myExit converts to MYEXIT
      • /var/mqm/exits/myExit.so(ExitLongName) converts to EXITLONG
    • For queue managers earlier than IBM WebSphere® MQ 7, set the PROPCTL attribute to a value of NONE.

      Each auto-defined cluster-sender channel is based on the corresponding cluster-receiver channel. Before IBM MQ Version 7, the cluster-receiver channel does not have a PROPCTL attribute, so this attribute is therefore set to COMPAT in the auto-defined cluster-sender channel.

      If the cluster needs to use PROPCTL to remove application headers such as RFH2 from messages going from an IBM WebSphere MQ 7 or later queue manager to a queue manager on an earlier version of IBM MQ, you must write a channel auto-definition exit that sets PROPCTL to a value of NONE.

  • Use the channel attribute LOCLADDR to control aspects of addressing.
    • To enable an outbound (TCP) channel to use a particular IP address, port or port range, use the channel attribute LOCLADDR. This is useful if you have more than one network card and you want a channel to use a specific one for outbound communications.
    • To specify a virtual IP address on CLUSSDR channels, use the IP address from the LOCLADDR on a manually defined CLUSSDR. To specify the port range, use the port range from the CLUSRCVR.
    • If a cluster needs to use LOCLADDR to get the outbound communication channels to bind to a specific IP address, you can write a channel auto-definition exit to force the LOCLADDR value into any of their automatically defined CLUSSDR channels. You must also specify it in the manually defined CLUSSDR channel.
    • Put a port number or port range in the LOCLADDR of a CLUSRCVR channel, if you want all the queue managers in a cluster to use a specific port or range of ports, for all their outbound communications.
    Note: Do not put an IP address in the LOCLADDR field of a CLUSRCVR channel, unless all queue managers are on the same server. The LOCLADDR IP address is propagated to the auto-defined CLUSSDR channels of all queue managers that connect using the CLUSRCVR channel.

    [UNIX, Linux, Windows, IBM i]On Multiplatforms, you can set a default local address value that is used for all sender channels that do not have a local address defined. The default value is defined by setting the MQ_LCLADDR environment variable prior to starting the queue manager. The format of the value matches that of MQSC attribute LOCLADDR.