Cluster attributes that can be specified on the queue definition commands.
The DEFINE QLOCAL, DEFINE QREMOTE, and DEFINE
QALIAS commands
The cluster attributes on the
DEFINE QLOCAL,
DEFINE
QREMOTE, and
DEFINE QALIAS commands, and the three equivalent
ALTER commands, are:
- CLUSTER
- Specifies the name of the cluster to which the queue belongs.
- CLUSNL
- Specifies a namelist of cluster names.
- DEFBIND
- Specifies the binding to be used when an application specifies
MQOO_BIND_AS_Q_DEF on the MQOPEN call. The options for this
attribute are:
- Specify
DEFBIND(OPEN) to bind the queue handle to a specific instance of the
cluster queue when the queue is opened. DEFBIND(OPEN) is the default for this
attribute.
- Specify
DEFBIND(NOTFIXED) so that the queue handle is not bound to any instance
of the cluster queue.
- Specify
DEFBIND(GROUP) to allow an application to request that a group of
messages are all allocated to the same destination instance.
When multiple queues with the same name are advertised in a queue manager cluster,
applications can choose whether to send all messages from this application to a single instance
(MQOO_BIND_ON_OPEN), to allow the workload management algorithm to select the most suitable
destination on a per message basis (MQOO_BIND_NOT_FIXED), or allow an application to request that a
'group' of messages be all allocated to the same destination instance (MQOO_BIND_ON_GROUP). The
workload balancing is re-driven between groups of messages (without requiring an MQCLOSE and MQOPEN
of the queue).
- When you specify DEFBIND on a queue definition, the queue is defined with
one of the attributes,
MQBND_BIND_ON_OPEN, MQBND_BIND_NOT_FIXED,
or MQBND_BIND_ON_GROUP. Either MQBND_BIND_ON_OPEN or MQBND_BIND_ON_GROUP must be specified when using groups with clusters.
- You should set the DEFBIND attribute to the same value on all instances of
the same cluster queue.
- CLWLRANK
- Applies a ranking factor to a queue for workload management purposes. The
CLWLRANK parameter is not supported on model queues. The cluster workload
algorithm selects a destination queue with the highest rank. By default
CLWLRANK for all queues is set to zero.
- If the final destination is a queue manager on a different cluster, you can set the rank of any
intermediate gateway queue managers at the intersection of neighboring clusters. With the
intermediate queue managers ranked, the cluster workload algorithm correctly selects a destination
queue manager nearer the final destination.
- The same logic applies to alias queues. The rank selection is made before the channel status is
checked, and therefore even non-accessible queue managers are available for selection. This has the
effect of allowing a message to be routed through a network, rather than having it select between
two possible destinations (as the priority would). So, if a channel is not started to the place
where the rank has indicated, the message is not routed to the next highest rank, but waits until a
channel is available to that destination (the message is held on the transmit queue).
- CLWLPRTY
- Applies a priority factor to a queue for workload management purposes. The cluster workload
algorithm selects a destination queue with the highest priority. By default priority for all queues
is set to zero.
- If there are two possible destination queues, you can use this attribute to make one destination
failover to the other destination. The priority selection is made after the channel status is
checked. All messages are sent to the queue with the highest priority unless the status of the
channel to that destination is not as favorable as the status of channels to other destinations.
This means that only the most accessible destinations are available for selection. This has the
effect of prioritizing between multiple destinations that are all available.
- CLWLUSEQ
- Specifies the behavior of an MQPUT operation for a queue. This parameter
specifies the behavior of an MQPUT operation when the target queue has a local
instance and at least one remote cluster instance (except where the MQPUT
originates from a cluster channel). This parameter is only valid for local queues.
- Possible values are: QMGR (the behavior is as specified by the
CLWLUSEQ parameter of the queue manager definition), ANY (the
queue manager treats the local queue as another instance of the cluster queue, for the purposes of
workload distribution), LOCAL (the local queue is the only target of the
MQPUT operation, providing the local queue is put enabled). The
MQPUT behavior depends upon the cluster workload
management algorithm.
The DISPLAY QUEUE and DISPLAY QCLUSTER commands
The attributes on the DEFINE QLOCAL, DEFINE QREMOTE, and
DEFINE QALIAS commands also apply to the DISPLAY QUEUE
command.
To display information about cluster queues, specify a queue type of QCLUSTER or
the keyword CLUSINFO on the DISPLAY QUEUE command, or use the
command DISPLAY QCLUSTER.
The DISPLAY QUEUE or DISPLAY QCLUSTER command returns the
name of the queue manager that hosts the queue (or the names of all queue managers if there is more
than one instance of the queue). It also returns the system name for each queue manager that hosts
the queue, the queue type represented, and the date and time at which the definition became
available to the local queue manager. This information is returned using the
CLUSQMGR, QMID, CLUSQT,
CLUSDATE, and CLUSTIME attributes.
The system name for the queue manager (QMID), is a unique, system-generated
name for the queue manager.
You can define a cluster queue that is also a shared queue. For example. on
z/OS® you can define:
DEFINE QLOCAL(MYQUEUE) CLUSTER(MYCLUSTER) QSGDISP(SHARED) CFSTRUCT(STRUCTURE)
The equivalent PCFs are MQCMD_CHANGE_Q, MQCMD_COPY_Q,
MQCMD_CREATE_Q, and MQCMD_INQUIRE_Q.