DEFINE queues

Use the MQSC DEFINE command to define a local, model, or remote queue, or a queue alias, reply-to queue alias, or a queue manager alias.

Using MQSC commands

For information on how you use MQSC commands, see Performing local administration tasks using MQSC commands.

[z/OS]You can issue this command from sources 2CR. For an explanation of the source symbols, see Sources from which you can issue MQSC commands on z/OS®.

Usage notes for DEFINE queues

  • Successful completion of the command does not mean that the action completed. To check for true completion, see the DEFINE queues step in Checking that async commands for distributed networks have finished.
  • For local queues
    1. [z/OS]You can define a local queue with QSGDISP(SHARED) even though another queue manager in the queue sharing group already has a local version of the queue. However, when you try to access the locally defined queue, it fails with reason code MQRC_OBJECT_NOT_UNIQUE (2343). A local version of the queue with the same name can be of type QLOCAL, QREMOTE, or QALIAS and has the disposition, QSGDISP(QMGR).

      To resolve the conflict, you must delete one of the queues using the DELETE command. If the queue you want to delete contains messages, use the PURGE option or remove the messages first using the MOVE command.

      For example, to delete the QSGDISP(LOCAL) version, which contains messages, and copy those messages to the QSGDISP(SHARED) version, then issue the following commands:
      
      MOVE QLOCAL(QUEUE.1) QSGDISP(PRIVATE) TOQLOCAL(QUEUE.1) TYPE(ADD)
      DELETE QLOCAL(QUEUE.1) QSGDISP(QMGR)
      
  • For alias queues:
    1. DEFINE QALIAS( aliasqueue ) TARGET( otherqname ) CLUSTER( c ) advertises the queue otherqname by the name aliasqueue.
    2. DEFINE QALIAS( aliasqueue ) TARGET( otherqname ) allows a queue advertised by the name otherqname to be used on this queue manager by the name aliasqueue.
    3. TARGTYPE and TARGET are not cluster attributes, that is, they are not shared in a cluster environment.
  • For remote queues:
    1. DEFINE QREMOTE( rqueue ) RNAME( otherq ) RQMNAME( otherqm ) CLUSTER( cl ) advertises this queue manager as a store and forward gateway to which messages for queue rqueue can be sent. It has no effect as a reply-to queue alias, except on the local queue manager.

      DEFINE QREMOTE( otherqm ) RNAME() RQMNAME( anotherqm ) XMITQ( xq ) CLUSTER advertises this queue manager as a store and forward gateway to which messages for anotherqm can be sent.

    2. RQMNAME can itself be the name of a cluster queue manager within the cluster. You can map the advertised queue manager name to another name locally. The pattern is the same as with QALIAS definitions.
    3. It is possible for the values of RQMNAME and QREMOTE to be the same if RQMNAME is itself a cluster queue manager. If this definition is also advertised using a CLUSTER attribute, do not choose the local queue manager in the cluster workload exit. If you do so, a cyclic definition results.
    4. Remote queues do not have to be defined locally. The advantage of doing so is that applications can refer to the queue by a simple, locally defined name. If you do then the queue name is qualified by the name of the queue manager on which the queue resides. Using a local definition means that applications do not need to be aware of the real location of the queue.
    5. A remote queue definition can also be used as a mechanism for holding a queue manager alias definition, or a reply-to queue alias definition. The name of the definition in these cases is:
      • The queue manager name being used as the alias for another queue manager name (queue manager alias), or
      • The queue name being used as the alias for the reply-to queue (reply-to queue alias).

Parameter descriptions for DEFINE QUEUE and ALTER QUEUE

Table 1 shows the parameters that are relevant for each type of queue. There is a description of each parameter after the table.
queue-name
Local name of the queue, except the remote queue where it is the local definition of the remote queue.
See Rules for naming IBM® MQ objects.
ACCTQ
Specifies whether accounting data collection is to be enabled for the queue. On z/OS, the data collected is class 3 accounting data (thread-level and queue-level accounting). In order for accounting data to be collected for this queue, accounting data for this connection must also be enabled. Turn on accounting data collection by setting either the ACCTQ queue manager attribute, or the options field in the MQCNO structure on the MQCONNX call.
QMGR
The collection of accounting data is based on the setting of the ACCTQ parameter on the queue manager definition.
ON
Accounting data collection is enabled for the queue unless the ACCTQ queue manager parameter has a value of NONE.
[z/OS]On z/OS systems, you must enable class 3 accounting using the START TRACE command.
OFF
Accounting data collection is disabled for the queue.
BOQNAME (queue-name)
The excessive backout requeue name.

This parameter is supported only on local and model queues.

Use this parameter to set or change the back out queue name attribute of a local or model queue. Apart from allowing its value to be queried, the queue manager does nothing based on the value of this attribute. IBM MQ classes for JMS transfers a message that is backed out the maximum number of times to this queue. The maximum is specified by the BOTHRESH attribute.

BOTHRESH(integer)
The backout threshold.
This parameter is supported only on local and model queues.
Use this parameter to set or change the value of the back out threshold attribute of a local or model queue. Apart from allowing its value to be queried, the queue manager does nothing based on the value of this attribute. IBM MQ classes for JMS use the attribute to determine how many times back a message out. When the value is exceeded the message is transferred to the queue named by the BOQNAME attribute.
Specify a value in the range 0 - 999,999,999.
[z/OS]CFSTRUCT(structure-name)
Specifies the name of the coupling facility structure where you want messages stored when you use shared queues.
This parameter is supported only on z/OS for local and model queues.
The name:
  • Cannot have more than 12 characters
  • Must start with an uppercase letter (A - Z)
  • Can include only the characters A - Z and 0 - 9
The name of the queue sharing group to which the queue manager is connected is prefixed to the name you supply. The name of the queue sharing group is always four characters, padded with @ symbols if necessary. For example, if you use a queue sharing group named NY03 and you supply the name PRODUCT7, the resultant coupling facility structure name is NY03PRODUCT7. The administrative structure for the queue sharing group (in this case NY03CSQ_ADMIN) cannot be used for storing messages.
For ALTER QLOCAL, ALTER QMODEL, DEFINE QLOCAL with REPLACE, and DEFINE QMODEL with REPLACE the following rules apply:
  • On a local queue with QSGDISP(SHARED), CFSTRUCT cannot change.

    If you change either the CFSTRUCT or QSGDISP value you must delete and redefine the queue. To preserve any of the messages on the queue you must offload the messages before you delete the queue. Reload the messages after you redefine the queue, or move the messages to another queue.

  • On a model queue with DEFTYPE(SHAREDYN), CFSTRUCT cannot be blank.
  • On a local queue with a QSGDISP other than SHARED, or a model queue with a DEFTYPE other than SHAREDYN, the value of CFSTRUCT does not matter.
For DEFINE QLOCAL with NOREPLACE and DEFINE QMODEL with NOREPLACE, the coupling facility structure:
  • On a local queue with QSGDISP(SHARED) or a model queue with a DEFTYPE(SHAREDYN), CFSTRUCT cannot be blank.
  • On a local queue with a QSGDISP other than SHARED, or a model queue with a DEFTYPE other than SHAREDYN, the value of CFSTRUCT does not matter.
Note: Before you can use the queue, the structure must be defined in the coupling facility Resource Management (CFRM) policy data set.
CLCHNAME(channel name)

This parameter is supported only on transmission queues.

CLCHNAME is the generic name of the cluster-sender channels that use this queue as a transmission queue. The attribute specifies which cluster-sender channels send messages to a cluster-receiver channel from this cluster transmission queue.
You can also set the transmission queue attribute CLCHNAME attribute to a cluster-sender channel manually. Messages that are destined for the queue manager connected by the cluster-sender channel are stored in the transmission queue that identifies the cluster-sender channel. They are not stored in the default cluster transmission queue. If you set the CLCHNAME attribute to blanks, the channel switches to the default cluster transmission queue when the channel restarts. The default queue is either SYSTEM.CLUSTER.TRANSMIT.ChannelName or SYSTEM.CLUSTER.TRANSMIT.QUEUE, depending on the value of the queue manager DEFCLXQ attribute.
By specifying asterisks, " * ", in CLCHNAME, you can associate a transmission queue with a set of cluster-sender channels. The asterisks can be at the beginning, end, or any number of places in the middle of the channel name string. CLCHNAME is limited to a length of 48 characters, MQ_OBJECT_NAME_LENGTH. A channel name is limited to 20 characters: MQ_CHANNEL_NAME_LENGTH. If you specify an asterisk you must also set the SHARE attribute so that multiple channels can concurrently access the transmission queue.
[z/OS] If you specify a * in CLCHNAME, to obtain a channel profile name, you must specify the channel profile name within quotation marks. If you do not specify the generic channel name within quotation marks you receive message CSQ9030E.
The default queue manager configuration is for all cluster-sender channels to send messages from a single transmission queue, SYSTEM.CLUSTER.TRANSMIT.QUEUE. The default configuration can be modified by changing the queue manager attribute, DEFCLXQ. The default value of the attribute is SCTQ. You can change the value to CHANNEL. If you set the DEFCLXQ attribute to CHANNEL, each cluster-sender channel defaults to using a specific cluster transmission queue, SYSTEM.CLUSTER.TRANSMIT.ChannelName.
[z/OS]On z/OS, if this parameter is set, the queue:
  • Must be shareable, by specifying the queue attribute SHARE.
  • Must be indexed on the correlation ID by specifying INDXTYPE(CORRELID).
  • Must not be a dynamic or a shared queue.
[AIX, Linux, Windows][z/OS]CLUSNL(namelist name)
The name of the namelist that specifies a list of clusters to which the queue belongs.
This parameter is supported only on alias, local, and remote queues.
Changes to this parameter do not affect instances of the queue that are already open.

Only one of the resultant values of CLUSNL or CLUSTER can be non-blank; you cannot specify a value for both.

On local queues, this parameter cannot be set for the following queues:
  • Transmission queues
  • SYSTEM.CHANNEL.xx queues
  • SYSTEM.CLUSTER.xx queues
  • SYSTEM.COMMAND.xx queues
  • [z/OS]On z/OS only, SYSTEM.QSG.xx queues
This parameter is valid only on the following platforms:
  • AIX®, Linux®, and Windows
  • z/OS
[AIX, Linux, Windows][z/OS]CLUSTER(cluster name)
The name of the cluster to which the queue belongs.
This parameter is supported only on alias, local, and remote queues.
The maximum length is 48 characters conforming to the rules for naming IBM MQ objects. Changes to this parameter do not affect instances of the queue that are already open.

Only one of the resultant values of CLUSNL or CLUSTER can be non-blank; you cannot specify a value for both.

On local queues, this parameter cannot be set for the following queues:
  • Transmission queues
  • SYSTEM.CHANNEL.xx queues
  • SYSTEM.CLUSTER.xx queues
  • SYSTEM.COMMAND.xx queues
  • [z/OS]On z/OS only, SYSTEM.QSG.xx queues
This parameter is valid only on the following platforms:
  • AIX, Linux, and Windows
  • z/OS
CLWLPRTY(integer)
Specifies the priority of the queue for the purposes of cluster workload distribution. This parameter is valid only for local, remote, and alias queues. The value must be in the range zero through 9 where zero is the lowest priority and 9 is the highest. For more information about this attribute, see CLWLPRTY queue attribute.
CLWLRANK (integer)
Specifies the rank of the queue for the purposes of cluster workload distribution. This parameter is valid only for local, remote, and alias queues. The value must be in the range zero through 9 where zero is the lowest rank and 9 is the highest. For more information about this attribute, see CLWLRANK queue attribute.
CLWLUSEQ
Specifies the behavior of an MQPUT operation when the target queue has a local instance and at least one remote cluster instance. The parameter has no effect when the MQPUT originates from a cluster channel. This parameter is valid only for local queues.
QMGR
The behavior is as specified by the CLWLUSEQ parameter of the queue manager definition.
ANY
The queue manager is to treat 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.
[z/OS]CMDSCOPE
This parameter applies to z/OS only. It specifies where the command is run when the queue manager is a member of a queue sharing group.
CMDSCOPE must be blank, or the local queue manager, if QSGDISP is set to GROUP or SHARED.
''
The command runs on the queue manager on which it was entered.
QmgrName
The command runs on the queue manager you specify, providing the queue manager is active within the queue sharing group.

You can specify a queue manager name, other than the queue manager on which the command was entered. You can specify another name, only if you are using a queue sharing group environment and if the command server is enabled.

*
The command runs on the local queue manager and is also passed to every active queue manager in the queue sharing group. The effect of * is the same as entering the command on every queue manager in the queue sharing group.
CUSTOM(string)
The custom attribute for new features.

This attribute contains the values of attributes, as pairs of attribute name and value, separated by at least one space. The attribute name-value pairs have the form NAME(VALUE).

The maximum length is defined by the IBM MQ constant MQ_CUSTOM_LENGTH and is currently set to 128 on all platforms.

The CUSTOM attribute is intended to be used with the following IBM MQ attribute.

CAPEXPRY(integer)
The maximum time, expressed in tenths of a second, until a message put using an object handle with this object in the resolution path, becomes eligible for expiry processing.

For more information on message expiry processing, see Enforcing lower expiration times.

integer
The value must be in the range one through to 999 999 999.
NOLIMIT
There is no limit on the expiry time of messages put using this object. This is the default value.
Specifying a value for CAPEXPRY that is not valid, does not cause the command to fail. Instead the default value is used.

Note that existing messages in the queue, prior to a change in CAPEXPRY, are not affected by the change (that is, their expiry time remains intact). Only new messages that are put into the queue after the change in CAPEXPRY have the new expiry time.

DEFBIND
Specifies the binding to be used when the application specifies MQOO_BIND_AS_Q_DEF on the MQOPEN call, and the queue is a cluster queue.
OPEN
The queue handle is bound to a specific instance of the cluster queue when the queue is opened.
NOTFIXED
The queue handle is not bound to any instance of the cluster queue. The queue manager selects a specific queue instance when the message is put using MQPUT. It changes that selection later, if the need arises.
GROUP
Allows an application to request that a group of messages is allocated to the same destination instance.
Multiple queues with the same name can be advertised in a queue manager cluster. An application can send all messages to a single instance, MQOO_BIND_ON_OPEN. It can allow a workload management algorithm to select the most suitable destination on a per message basis, MQOO_BIND_NOT_FIXED. It can allow an application to request that a group of messages be all allocated to the same destination instance. The workload balancing reselects a destination between groups of messages, without requiring an MQCLOSE and MQOPEN of the queue.
The MQPUT1 call always behaves as if NOTFIXED is specified.
This parameter is valid on all platforms.
DEFPRESP
Specifies the behavior to be used by applications when the put response type, within the MQPMO options, is set to MQPMO_RESPONSE_AS_Q_DEF.
SYNC
Put operations to the queue specifying MQPMO_RESPONSE_AS_Q_DEF are issued as if MQPMO_SYNC_RESPONSE is specified instead.
ASYNC
Put operations to the queue specifying MQPMO_RESPONSE_AS_Q_DEF are issued as if MQPMO_ASYNC_RESPONSE is specified instead; see MQPMO options (MQLONG).
DEFPRTY(integer)
The default priority of messages put on the queue. The value must be in the range 0 - 9. Zero is the lowest priority, through to the MAXPRTY queue manager parameter. The default value of MAXPRTY is 9.
DEFPSIST
Specifies the message persistence to be used when applications specify the MQPER_PERSISTENCE_AS_Q_DEF option.
NO
Messages on this queue are lost across a restart of the queue manager.
YES
Messages on this queue survive a restart of the queue manager.
[z/OS]On z/OS, N and Y are accepted as synonyms of NO and YES.
DEFREADA
Specifies the default read ahead behavior for non-persistent messages delivered to the client. Enabling read ahead can improve the performance of client applications consuming non-persistent messages.
NO
Non-persistent messages are not read ahead unless the client application is configured to request read ahead.
YES
Non-persistent messages are sent to the client before an application requests them. Non-persistent messages can be lost if the client ends abnormally or if the client does not delete all the messages it is sent.
DISABLED
Read ahead of non-persistent messages in not enabled for this queue. Messages are not sent ahead to the client regardless of whether read ahead is requested by the client application.
DEFSOPT
The default share option for applications opening this queue for input:
EXCL
The open request is for exclusive input from the queue.
[z/OS]On z/OS, EXCL is the default value.
SHARED
The open request is for shared input from the queue.
[UNIX, Linux, Windows, IBM i]On Multiplatforms, SHARED is the default value.
DEFTYPE
Queue definition type.
This parameter is supported only on model queues.
PERMDYN
A permanent dynamic queue is created when an application issues an MQOPEN MQI call with the name of this model queue specified in the object descriptor (MQOD).

[z/OS]On z/OS, the dynamic queue has a disposition of QMGR.

[z/OS]SHAREDYN
This option is available on z/OS only.
A permanent dynamic queue is created when an application issues an MQOPEN API call with the name of this model queue specified in the object descriptor (MQOD).
The dynamic queue has a disposition of SHARED.
TEMPDYN
A temporary dynamic queue is created when an application issues an MQOPEN API call with the name of this model queue specified in the object descriptor (MQOD).
[z/OS]On z/OS, the dynamic queue has a disposition of QMGR.
[z/OS]Do not specify this value for a model queue definition with a DEFPSIST parameter of YES.
[z/OS]If you specify this option, do not specify INDXTYPE(MSGTOKEN).
DESCR(string)
Plain-text comment. It provides descriptive information about the object when an operator issues the DISPLAY QUEUE command.
It must contain only displayable characters. The maximum length is 64 characters. In a DBCS installation, it can contain DBCS characters (subject to a maximum length of 64 bytes).
Note: Use characters that are in the coded character set identifier (CCSID) of this queue manager. If you do not do so and if the information is sent to another queue manager, they might be translated incorrectly.
[AIX, Linux, Windows]DISTL
DISTL sets whether distribution lists are supported by the partner queue manager.
YES
Distribution lists are supported by the partner queue manager.
NO
Distribution lists are not supported by the partner queue manager.
Note: You do not normally change this parameter, because it is set by the MCA. However you can set this parameter when defining a transmission queue if the distribution list capability of the destination queue manager is known.
This parameter is valid only on AIX, Linux, and Windows.
FORCE
This parameter applies only to the ALTER command on alias, local and remote queues.
Specify this parameter to force completion of the command in the following circumstances.
For an alias queue, if both of the following statements are true:
  • The TARGQ parameter is specified
  • An application has this alias queue open
For a local queue, if both of the following statements are true:
  • The NOSHARE parameter is specified
  • More than one application has the queue open for input
FORCE is also needed if both of the following statements are true:
  • The USAGE parameter is changed
  • Either one or more messages are on the queue, or one or more applications have the queue open

Do not change the USAGE parameter while there are messages on the queue; the format of messages changes when they are put on a transmission queue.

For a remote queue, if both of the following statements are true:
  • The XMITQ parameter is changed
  • One or more applications has this queue open as a remote queue
FORCE is also needed if both of the following statements are true:
  • Any of the RNAME, RQMNAME, or XMITQ parameters are changed
  • One or more applications has a queue open that resolved through this definition as a queue manager alias
Note: FORCE is not required if this definition is in use as a reply-to queue alias only.

If FORCE is not specified in the circumstances described, the command is unsuccessful.

GET
Specifies whether applications are to be permitted to get messages from this queue:
ENABLED
Messages can be retrieved from the queue, by suitably authorized applications.
DISABLED
Applications cannot retrieve messages from the queue.
This parameter can also be changed using the MQSET API call.
HARDENBO & NOHARDENBO
Specifies whether the count of the number of times that a message was backed out is hardened. When the count is hardened, the value of the BackoutCount field of the message descriptor is written to the log before the message is returned by an MQGET operation. Writing the value to the log ensures that the value is accurate across restarts of the queue manger.
This parameter is supported only on local and model queues.
When the backout count is hardened, the performance of MQGET operations for persistent messages on this queue is impacted.
HARDENBO
The message backout count for messages on this queue is hardened to ensure that the count is accurate.
NOHARDENBO
The message backout count for messages on this queue is not hardened and might not be accurate over queue manager restarts.
[z/OS]Note: This parameter affects only IBM MQ for z/OS. You can set this parameter on Multiplatforms but it is ineffective.
[UNIX, Linux, Windows, IBM i]IMGRCOVQ
Specifies whether a local or permanent dynamic queue object is recoverable from a media image, if linear logging is being used. Possible values are:
YES
These queue objects are recoverable.
NO
The rcdmqimg (record media image) andrcrmqobj (re-create object) commands are not permitted for these objects, and automatic media images, if enabled, are not written for these objects.
QMGR
If you specify QMGR, and the IMGRCOVQ attribute for the queue manager specifies YES, these queue objects are recoverable.
If you specify QMGR and the IMGRCOVQ attribute for the queue manager specifies NO, the rcdmqimg (record media image) andrcrmqobj (re-create object) commands are not permitted for these objects, and automatic media images, if enabled, are not written for these objects.
QMGR is the default value.
This parameter is not valid on z/OS.
[z/OS]INDXTYPE
The type of index maintained by the queue manager to expedite MQGET operations on the queue. For shared queues, the type of index determines the type of MQGET operations that can be used.
This parameter is supported only on z/OS. On other platforms, all queues are automatically indexed.
This parameter is supported only on local and model queues.
Messages can be retrieved using a selection criterion only if an appropriate index type is maintained, as the following table shows:
Table 2. Index type required for different retrieval selection criteria
Retrieval selection criterion Index type required
  Shared queue Other queue
None (sequential retrieval) Any Any
Message identifier MSGID or NONE Any
Correlation identifier CORRELID Any
Message and correlation identifiers MSGID or CORRELID Any
Group identifier GROUPID Any
Grouping GROUPID GROUPID
Message token Not allowed MSGTOKEN
where the value of INDXTYPE parameter has the following values:
NONE
No index is maintained. Use NONE when messages are typically retrieved sequentially or use both the message identifier and the correlation identifier as a selection criterion on the MQGET call.
MSGID
An index of message identifiers is maintained. Use MSGID when messages are typically retrieved using the message identifier as a selection criterion on the MQGET call with the correlation identifier set to NULL.
CORRELID
An index of correlation identifiers is maintained. Use CORRELID when messages are typically retrieved using the correlation identifier as a selection criterion on the MQGET call with the message identifier set to NULL.
GROUPID
An index of group identifiers is maintained. Use GROUPID when messages are retrieved using message grouping selection criteria.
Note:
  1. You cannot set INDXTYPE to GROUPID if the queue is a transmission queue.
  2. The queue must use a CF structure at CFLEVEL(3), to specify a shared queue with INDXTYPE(GROUPID).
[z/OS] MSGTOKEN
An index of message tokens is maintained. Use MSGTOKEN when the queue is a WLM-managed queue that you are using with the Workload Manager functions of z/OS.
Note: You cannot set INDXTYPE to MSGTOKEN if:
  • The queue is a model queue with a definition type of SHAREDYN
  • The queue is a temporary dynamic queue
  • The queue is a transmission queue
  • You specify QSGDISP(SHARED)
For queues that are not shared and do not use grouping or message tokens, the index type does not restrict the type of retrieval selection. However, the index is used to expedite GET operations on the queue, so choose the type that corresponds to the most common retrieval selection.
If you are altering or replacing an existing local queue, you can change the INDXTYPE parameter only in the cases indicated in the following table:
Table 3. Index type change permitted depending upon queue-sharing and presence of messages in the queue
Queue type NON-SHARED SHARED
Queue state Uncommitted activity No uncommitted activity, messages present No uncommitted activity, and empty Open or messages present Not open, and empty
Change INDXTYPE from: To: Change allowed?
NONE MSGID No Yes Yes No Yes
NONE CORRELID No Yes Yes No Yes
NONE MSGTOKEN No No Yes - -
NONE GROUPID No No Yes No Yes
MSGID NONE No Yes Yes No Yes
MSGID CORRELID No Yes Yes No Yes
MSGID MSGTOKEN No No Yes - -
MSGID GROUPID No No Yes No Yes
CORRELID NONE No Yes Yes No Yes
CORRELID MSGID No Yes Yes No Yes
CORRELID MSGTOKEN No No Yes - -
CORRELID GROUPID No No Yes No Yes
MSGTOKEN NONE No Yes Yes - -
MSGTOKEN MSGID No Yes Yes - -
MSGTOKEN CORRELID No Yes Yes - -
MSGTOKEN GROUPID No No Yes - -
GROUPID NONE No No Yes No Yes
GROUPID MSGID No No Yes No Yes
GROUPID CORRELID No No Yes No Yes
GROUPID MSGTOKEN No No Yes - -
INITQ(string)
The local name of the initiation queue on this queue manager, to which trigger messages relating to this queue are written. See Rules for naming IBM MQ objects.
This parameter is supported only on local and model queues.
LIKE(qtype-name)
The name of a queue, with parameters that are used to model this definition.
If this field is not completed, the values of undefined parameter fields are taken from one of the following definitions. The choice depends on the queue type:
Table 4. Queue types and their corresponding definitions
Queue type Definition
Alias queue SYSTEM.DEFAULT.ALIAS.QUEUE
Local queue SYSTEM.DEFAULT.LOCAL.QUEUE
Model queue SYSTEM.DEFAULT.MODEL.QUEUE
Remote queue SYSTEM.DEFAULT.REMOTE.QUEUE
For example, not completing this parameter is equivalent to defining the following value of LIKE for an alias queue:

LIKE(SYSTEM.DEFAULT.ALIAS.QUEUE)
If you require different default definitions for all queues, alter the default queue definitions instead of using the LIKE parameter.
[z/OS]On z/OS, the queue manager searches for an object with the name and queue type you specify with a disposition of QMGR, COPY, or SHARED. The disposition of the LIKE object is not copied to the object you are defining.
Note:
  1. QSGDISP(GROUP) objects are not searched.
  2. LIKE is ignored if QSGDISP(COPY) is specified.
[AIX, Linux, Windows][z/OS]MAXDEPTH(integer)
The maximum number of messages allowed on the queue.
This parameter is supported only on local and model queues.
On the following platforms, specify a value in the range zero through 999999999:
  • [AIX, Linux, Windows]AIX, Linux, and Windows
  • [z/OS]z/OS
On any other IBM MQ platform, specify a value in the range zero through 640000.
Other factors can still cause the queue to be treated as full, for example, if there is no further hard disk space available.
If this value is reduced, any messages that are already on the queue that exceed the new maximum remain intact.
[MQ 9.2.0 Jul 2020][UNIX, Linux, Windows, IBM i]MAXFSIZE
The maximum size, in megabytes, that a queue file can grow to. It is possible for a queue file to exceed this size if you have configured the value to be lower than the current queue file size.
If that happens the queue file no longer accepts new messages, but allows existing messages to be consumed. When the queue file size has dropped below the configured value, new messages can be put to the queue.
Note: This figure can differ from the value of the attribute configured on the queue, because internally the queue manager might need to use a larger block size to reach the chosen size. See Modifying IBM MQ queue files for more information on changing the size of queue files and block size and granularity.
When the granularity needs changing because this attribute has been increased, warning message AMQ7493W Granularity changed is written to the AMQERR logs. This gives you an indication that you need to plan for the queue to be emptied, in order for IBM MQ to adopt the new granularity.
The default value for this attribute is DEFAULT, which equates to a hard-coded value of 2,088,960 MB, the maximum for a queue in versions of IBM MQ prior to IBM MQ 9.1.5.
MAXMSGL(integer)
The maximum length (in bytes) of messages on this queue.
This parameter is supported only on local and model queues.
[AIX, Linux, Windows]On AIX, Linux, and Windows, specify a value in the range zero to the maximum message length for the queue manager. See the MAXMSGL parameter of the ALTER QMGR command, ALTER QMGR MAXMSGL.
[z/OS]On z/OS, specify a value in the range zero through 100 MB (104 857 600 bytes).
Message length includes the length of user data and the length of headers. For messages put on the transmission queue, there are additional transmission headers. Allow an additional 4000 bytes for all the message headers.
If this value is reduced, any messages that are already on the queue with length that exceeds the new maximum are not affected.
Applications can use this parameter to determine the size of buffer for retrieving messages from the queue. Therefore, the value can be reduced only if it is known that this reduction does not cause an application to operate incorrectly.
Note that by adding the digital signature and key to the message, Advanced Message Security increases the length of the message.
MONQ
Controls the collection of online monitoring data for queues.
This parameter is supported only on local and model queues.
QMGR
Collect monitoring data according to the setting of the queue manager parameter MONQ.
OFF
Online monitoring data collection is turned off for this queue.
LOW
If the value of the MONQ parameter of the queue manager is not NONE, online monitoring data collection is turned on for this queue.
MEDIUM
If the value of the MONQ parameter of the queue manager is not NONE, online monitoring data collection is turned on for this queue.
HIGH
If the value of the MONQ parameter of the queue manager is not NONE, online monitoring data collection is turned on for this queue.
There is no distinction between the values LOW, MEDIUM, and HIGH. These values all turn data collection on, but do not affect the rate of collection.
When this parameter is used in an ALTER queue command, the change is effective only when the queue is next opened.
MSGDLVSQ
Message delivery sequence.
This parameter is supported only on local and model queues.
PRIORITY
Messages are delivered (in response to MQGET API calls) in first-in-first-out (FIFO) order within priority.
FIFO
Messages are delivered (in response to MQGET API calls) in FIFO order. Priority is ignored for messages on this queue.
The message delivery sequence parameter can be changed from PRIORITY to FIFO while there are messages on the queue. The order of the messages already on the queue is not changed. Messages added to the queue later take the default priority of the queue, and so might be processed before some of the existing messages.
If the message delivery sequence is changed from FIFO to PRIORITY, the messages put on the queue while the queue was set to FIFO take the default priority.
[z/OS]Note: If INDXTYPE(GROUPID) is specified with MSGDLVSQ(PRIORITY), the priority in which groups are retrieved is based on the priority of the first message within each group. The priorities 0 and 1 are used by the queue manager to optimize the retrieval of messages in logical order. The first message in each group must not use these priorities. If it does, the message is stored as if it was priority two.
[UNIX, Linux, Windows, IBM i]NPMCLASS
The level of reliability to be assigned to non-persistent messages that are put to the queue:
NORMAL
Non-persistent messages are lost after a failure, or queue manager shutdown. These messages are discarded on a queue manager restart.
HIGH
The queue manager attempts to retain non-persistent messages on this queue over a queue manager restart or switch over.
[z/OS]You cannot set this parameter on z/OS.
PROCESS(string)
The local name of the IBM MQ process.
This parameter is supported only on local and model queues.
This parameter is the name of a process instance that identifies the application started by the queue manager when a trigger event occurs; see Rules for naming IBM MQ objects.
The process definition is not checked when the local queue is defined, but it must be available for a trigger event to occur.
If the queue is a transmission queue, the process definition contains the name of the channel to be started. This parameter is optional for transmission queues on the following platforms:
  • [IBM i]IBM i
  • [AIX, Linux, Windows]AIX, Linux, and Windows
  • [z/OS]z/OS
If you do not specify it, the channel name is taken from the value specified for the TRIGDATA parameter.
PROPCTL
Property control attribute. The attribute is optional. It is applicable to local, alias, and model queues.
PROPCTL options are as follows. The options do not affect message properties in the MQMD or MQMD extension.
ALL

Set ALL so that an application can read all the properties of the message either in MQRFH2 headers, or as properties of the message handle.

The ALL option enables applications that cannot be changed to access all the message properties from MQRFH2 headers. Applications that can be changed, can access all the properties of the message as properties of the message handle.

In some cases, the format of data in MQRFH2 headers in the received message might be different to the format in the message when it was sent.

COMPAT
Set COMPAT so that unmodified applications that expect JMS-related properties to be in an MQRFH2 header in the message data continue to work as before. Applications that can be changed, can access all the properties of the message as properties of the message handle.
If the message contains a property with a prefix of mcd., jms., usr., or mqext., all message properties are delivered to the application. If no message handle is supplied, properties are returned in an MQRFH2 header. If a message handle is supplied, all properties are returned in the message handle.
If the message does not contain a property with one of those prefixes, and the application does not provide a message handle, no message properties are returned to the application. If a message handle is supplied, all properties are returned in the message handle.

In some cases, the format of data in MQRFH2 headers in the received message might be different to the format in the message when it was sent.

FORCE
Force all applications to read message properties from MQRFH2 headers.
Properties are always returned in the message data in an MQRFH2 header regardless of whether the application specifies a message handle.
A valid message handle supplied in the MsgHandle field of the MQGMO structure on the MQGET call is ignored. Properties of the message are not accessible using the message handle.

In some cases, the format of data in MQRFH2 headers in the received message might be different to the format in the message when it was sent.

NONE
If a message handle is supplied, all the properties are returned in the message handle.
All message properties are removed from the message body before it is delivered to the application.
PUT
Specifies whether messages can be put on the queue.
ENABLED
Messages can be added to the queue (by suitably authorized applications).
DISABLED
Messages cannot be added to the queue.
This parameter can also be changed using the MQSET API call.
QDEPTHHI(integer)
The threshold against which the queue depth is compared to generate a Queue Depth High event.
This parameter is supported only on local and model queues.
[z/OS]For more information about the effect that shared queues on z/OS have on this event; see Shared queues and queue depth events on z/OS.
This event indicates that an application put a message on a queue resulting in the number of messages on the queue becoming greater than or equal to the queue depth high threshold. See the QDPHIEV parameter.
The value is expressed as a percentage of the maximum queue depth (MAXDEPTH parameter), and must be in the range zero through 100 and no less than QDEPTHLO.
QDEPTHLO(integer)
The threshold against which the queue depth is compared to generate a Queue Depth Low event.
This parameter is supported only on local and model queues.
[z/OS]For more information about the effect that shared queues on z/OS have on this event; see Shared queues and queue depth events on z/OS.
This event indicates that an application retrieved a message from a queue resulting in the number of messages on the queue becoming less than or equal to the queue depth low threshold. See the QDPLOEV parameter.
The value is expressed as a percentage of the maximum queue depth (MAXDEPTH parameter), and must be in the range zero through 100 and no greater than QDEPTHHI.
QDPHIEV
Controls whether Queue Depth High events are generated.
This parameter is supported only on local and model queues.
A Queue Depth High event indicates that an application put a message on a queue resulting in the number of messages on the queue becoming greater than or equal to the queue depth high threshold. See the QDEPTHHI parameter.
ENABLED
Queue Depth High events are generated.
DISABLED
Queue Depth High events are not generated.
Note: The value of this parameter can change implicitly.

[z/OS]On z/OS, shared queues affect the event.

For more information about this event, see Queue Depth High.
QDPLOEV
Controls whether Queue Depth Low events are generated.
This parameter is supported only on local and model queues.
A Queue Depth Low event indicates that an application retrieved a message from a queue resulting in the number of messages on the queue becoming less than or equal to the queue depth low threshold. See the QDEPTHLO parameter.
ENABLED
Queue Depth Low events are generated.
DISABLED
Queue Depth Low events are not generated.
Note: The value of this parameter can change implicitly.

[z/OS]On z/OS, shared queues affect the event.

For more information about this event, see Queue Depth Low.
QDPMAXEV
Controls whether Queue Full events are generated.
This parameter is supported only on local and model queues.
A Queue Full event indicates that a put to a queue was rejected because the queue is full. The queue depth reached its maximum value.
ENABLED
Queue Full events are generated.
DISABLED
Queue Full events are not generated.
Note: The value of this parameter can change implicitly.

[z/OS]On z/OS, shared queues affect the event.

For more information about this event, see Queue Full.
[z/OS] QSGDISP
This parameter applies to z/OS only.

Specifies the disposition of the object within the group.

Table 5. Object dispositions for QSGDISP options
QSGDISP DEFINE
COPY

The object is defined on the page set of the queue manager that executes the command. It uses the QSGDISP(GROUP) object of the same name as the LIKE object.

For example, if you issue the following command,

DEFINE QUEUE(q_name)
REPLACE QSGDISP(COPY)
the queue manager searches the shared configuration repository for a QUEUE definition called q_name. If a matching QUEUE definition is found, the queue manager creates a local copy of this definition on the queue manager page set.

For local queues, messages are stored on the page sets of each queue manager and are available only through that queue manager.

GROUP

The object definition resides in the shared configuration repository. QSGDISP(GROUP) is allowed only if the queue manager is in a queue sharing group.

If the DEFINE for the QSGDISP(GROUP) object is successful, the DEFINE QUEUE(q_name) REPLACE QSGDISP(COPY) command is generated and sent to all active queue managers in the queue sharing group to make or refresh local copies on page set zero.

The DEFINE for the group object takes effect regardless of whether the generated command with QSGDISP(COPY) fails.

PRIVATE Not permitted.
QMGR

The object is defined on the page set of the queue manager that executes the command.

SHARED This option applies only to local queues. The object is defined in the shared repository. Messages are stored in the coupling facility and are available to any queue manager in the queue sharing group. You can specify SHARED only if:
  • CFSTRUCT is nonblank
  • INDXTYPE is not MSGTOKEN
  • The queue is not:
    • SYSTEM.CHANNEL.INITQ
    • SYSTEM.COMMAND.INPUT
If the queue is clustered, a command is generated. The command is sent to all active queue managers in the queue sharing group to notify them of this clustered, shared queue.
QSVCIEV
Controls whether Service Interval High or Service Interval OK events are generated.
This parameter is supported only on local and model queues and is ineffective if it is specified on a shared queue.
A Service Interval High event is generated when a check indicates that no messages were retrieved from the queue for at least the time indicated by the QSVCINT parameter.
A Service Interval OK event is generated when a check indicates that messages were retrieved from the queue within the time indicated by the QSVCINT parameter.
Note: The value of this parameter can change implicitly. For more information, see the description of the Service Interval High and Service Interval OK events in Queue Service Interval High and Queue Service Interval OK.
HIGH
Service Interval High events are generated
OK
Service Interval OK events are generated
NONE
No service interval events are generated
QSVCINT(integer)
The service interval used for comparison to generate Service Interval High and Service Interval OK events.
This parameter is supported only on local and model queues and is ineffective if it is specified on a shared queue.
See the QSVCIEV parameter.
The value is in units of milliseconds, and must be in the range zero through 999999999.
REPLACE & NOREPLACE
This option controls whether any existing definition is to be replaced with this one.
[z/OS]Note: On IBM MQ for z/OS, an existing definition is replaced only if it is of the same disposition. Any object with a different disposition is not changed.
REPLACE
If the object does exist, the effect is like issuing the ALTER command without the FORCE parameter and with all the other parameters specified. In particular, note that any messages that are on the existing queue are retained.

There is a difference between the ALTER command without the FORCE parameter, and the DEFINE command with the REPLACE parameter. The difference is that ALTER does not change unspecified parameters, but DEFINE with REPLACE sets all the parameters. If you use REPLACE, unspecified parameters are taken either from the object named on the LIKE parameter, or from the default definition, and the parameters of the object being replaced, if one exists, are ignored.

The command fails if both of the following statements are true:
  • The command sets parameters that would require the use of the FORCE parameter if you were using the ALTER command
  • The object is open

The ALTER command with the FORCE parameter succeeds in this situation.

[AIX, Linux, Windows]If SCOPE(CELL) is specified on AIX, Linux, and Windows, and there is already a queue with the same name in the cell directory, the command fails, even if REPLACE is specified.

NOREPLACE
The definition must not replace any existing definition of the object.
RETINTVL(integer)
The number of hours from when the queue was defined, after which the queue is no longer needed. The value must be in the range 0 - 999,999,999.
This parameter is supported only on local and model queues.
The CRDATE and CRTIME can be displayed using the DISPLAY QUEUE command.
This information is available for use by an operator or a housekeeping application to delete queues that are no longer required.
Note: The queue manager does not delete queues based on this value, nor does it prevent queues from being deleted if their retention interval is not expired. It is the responsibility of the user to take any required action.
RNAME(string)
Name of remote queue. This parameter is the local name of the queue as defined on the queue manager specified by RQMNAME.
This parameter is supported only on remote queues.
  • If this definition is used for a local definition of a remote queue, RNAME must not be blank when the open occurs.
  • If this definition is used for a queue manager alias definition, RNAME must be blank when the open occurs.

    In a queue manager cluster, this definition applies only to the queue manager that made it. To advertise the alias to the whole cluster, add the CLUSTER attribute to the remote queue definition.

  • If this definition is used for a reply-to queue alias, this name is the name of the queue that is to be the reply-to queue.
The name is not checked to ensure that it contains only those characters normally allowed for queue names; see Rules for naming IBM MQ objects.
RQMNAME(string)
The name of the remote queue manager on which the queue RNAME is defined.
This parameter is supported only on remote queues.
  • If an application opens the local definition of a remote queue, RQMNAME must not be blank or the name of the local queue manager. When the open occurs, if XMITQ is blank there must be a local queue of this name, which is to be used as the transmission queue.
  • If this definition is used for a queue manager alias, RQMNAME is the name of the queue manager that is being aliased. It can be the name of the local queue manager. Otherwise, if XMITQ is blank, when the open occurs there must be a local queue of this name, which is to be used as the transmission queue.
  • If RQMNAME is used for a reply-to queue alias, RQMNAME is the name of the queue manager that is to be the reply-to queue manager.
The name is not checked to ensure that it contains only those characters normally allowed for IBM MQ object names; see Rules for naming IBM MQ objects.
[AIX, Linux, Windows]SCOPE
Specifies the scope of the queue definition.
This parameter is supported only on alias, local, and remote queues.
QMGR
The queue definition has queue manager scope. This means that the definition of the queue does not extend beyond the queue manager that owns it. You can open a queue for output that is owned by another queue manager in either of two ways:
  1. Specify the name of the owning queue manager.
  2. Open a local definition of the queue on the other queue manager.
CELL
The queue definition has cell scope. Cell scope means that the queue is known to all the queue managers in the cell. A queue with cell scope can be opened for output merely by specifying the name of the queue. The name of the queue manager that owns the queue need not be specified.

If there is already a queue with the same name in the cell directory, the command fails. The REPLACE option does not affect this situation.

This value is valid only if a name service supporting a cell directory is configured.
Restriction: The DCE name service is no longer supported.
This parameter is valid only on AIX, Linux, and Windows.
SHARE and NOSHARE
Specifies whether multiple applications can get messages from this queue.
This parameter is supported only on local and model queues.
SHARE
More than one application instance can get messages from the queue.
NOSHARE
Only a single application instance can get messages from the queue.
[UNIX, Linux, Windows, IBM i]STATQ
Specifies whether statistics data collection is enabled:
QMGR
Statistics data collection is based on the setting of the STATQ parameter of the queue manager.
ON
If the value of the STATQ parameter of the queue manager is not NONE, statistics data collection for the queue is enabled.
OFF
Statistics data collection for the queue is disabled.
If this parameter is used in an ALTER queue command, the change is effective only for connections to the queue manager made after the change to the parameter.
This parameter is valid only on Multiplatforms.
[z/OS]STGCLASS(string)
The name of the storage class.
This parameter is supported only on local and model queues.
Note: You can change this parameter only if the queue is empty and closed.
This parameter is an installation-defined name. The first character of the name must be uppercase A through Z, and subsequent characters either uppercase A through Z or numeric 0 through 9.
This parameter is valid only on z/OS; see Storage classes.
[MQ 9.2.3 Jul 2021][UNIX, Linux, Windows, IBM i]STREAMQ
The name of a secondary queue where a copy of each message is put.
This parameter is valid only on AIX, Linux, and Windows.
Attention: If the user setting the STREAMQ attribute does not have change authority on the chosen stream queue, the command fails with error message AMQ8135E Not Authorized.

In addition, if the stream queue does not exist, error message AMQ8135E is returned instead of AMQ8147E IBM MQ object not found.

[MQ 9.2.3 Jul 2021][UNIX, Linux, Windows, IBM i]STRMQOS
The quality of service to use when delivering messages to the streaming queue.
The value can be one of:
BESTEF
If the original message can be delivered, but the streamed message cannot, the original message is still delivered to its queue.
This is the default value.
MUSTDUP
The queue manager ensures that both the original message and the streamed message are successfully delivered to their queues.
If, for some reason, the streamed message cannot be delivered to its queue, then the original message is not delivered to its queue either. The putting application receives an error reason code and must try to put the message again.
This parameter is valid only on AIX, Linux, and Windows.
TARGET(string)
The name of the queue or topic object being aliased; See Rules for naming IBM MQ objects. The object can be a queue or a topic as defined by TARGTYPE. The maximum length is 48 characters.
This parameter is supported only on alias queues.
This object needs to be defined only when an application process opens the alias queue.
This parameter is a synonym of the parameter TARGQ; TARGQ is retained for compatibility. If you specify TARGET, you cannot also specify TARGQ.
TARGTYPE(string)
The type of object to which the alias resolves.
QUEUE
The alias resolves to a queue.
TOPIC
The alias resolves to a topic.
TRIGDATA(string)
The data that is inserted in the trigger message. The maximum length of the string is 64 bytes.
This parameter is supported only on local and model queues.
For a transmission queue, you can use this parameter to specify the name of the channel to be started.
This parameter can also be changed using the MQSET API call.
TRIGDPTH(integer)
The number of messages that have to be on the queue before a trigger message is written, if TRIGTYPE is DEPTH. The value must be in the range 1 - 999,999,999.
This parameter is supported only on local and model queues.
This parameter can also be changed using the MQSET API call.
TRIGGER & NOTRIGGER
Specifies whether trigger messages are written to the initiation queue, named by the INITQ parameter, to trigger the application, named by the PROCESS parameter:
TRIGGER
Triggering is active, and trigger messages are written to the initiation queue.
NOTRIGGER
Triggering is not active, and trigger messages are not written to the initiation queue.

This parameter is supported only on local and model queues.

This parameter can also be changed using the MQSET API call.
TRIGMPRI(integer)
The message priority number that triggers this queue. The value must be in the range zero through to the MAXPRTY queue manager parameter; see DISPLAY QMGR (display queue manager settings) for details.
This parameter can also be changed using the MQSET API call.
TRIGTYPE
Specifies whether and under what conditions a trigger message is written to the initiation queue. The initiation queue is (named by the INITQ parameter.
This parameter is supported only on local and model queues.
FIRST
Whenever the first message of priority equal to or greater than the priority specified by the TRIGMPRI parameter of the queue arrives on the queue.
EVERY
Every time a message arrives on the queue with priority equal to or greater than the priority specified by the TRIGMPRI parameter of the queue.
DEPTH
When the number of messages with priority equal to or greater than the priority specified by TRIGMPRI is equal to the number indicated by the TRIGDPTH parameter.
NONE
No trigger messages are written.
This parameter can also be changed using the MQSET API call.
USAGE
Queue usage.
This parameter is supported only on local and model queues.
NORMAL
The queue is not a transmission queue.
XMITQ
The queue is a transmission queue, which is used to hold messages that are destined for a remote queue manager. When an application puts a message to a remote queue, the message is stored on the appropriate transmission queue. It stays there, awaiting transmission to the remote queue manager.

If you specify this option, do not specify values for CLUSTER and CLUSNL.

[z/OS]Additionally, on z/OS, do not specify INDXTYPE(MSGTOKEN) or INDXTYPE(GROUPID).

XMITQ(string)
The name of the transmission queue to be used for forwarding messages to the remote queue. XMITQ is used with either remote queue or queue manager alias definitions.
This parameter is supported only on remote queues.
If XMITQ is blank, a queue with the same name as RQMNAME is used as the transmission queue.
This parameter is ignored if the definition is being used as a queue manager alias and RQMNAME is the name of the local queue manager.
It is also ignored if the definition is used as a reply-to queue alias definition.