The USAGE attribute classifies a local queue as either a normal application queue or a transmission queue (XMITQ). That single word changes how IBM MQ treats puts, how channels bind to the queue, and how operators interpret depth on monitoring screens. Beginners sometimes create a queue named PARTNER.XMIT but leave USAGE(NORMAL)—the channel fails or messages do not flow as expected. This page explains USAGE(NORMAL) versus USAGE(XMITQ), how remote queue definitions and sender channels reference transmission queues, why applications should not put business data directly to XMITQ, and how USAGE fits into store-and-forward across queue managers.
USAGE(NORMAL) is the default role for queues that hold business messages: orders, payments, audit events, and replies. Producers MQPUT; consumers MQGET; triggering, backout, and MAXDEPTH apply as documented for application traffic. Most queues in your estate are NORMAL. Cluster queues publishing to a cluster are still local queues with NORMAL usage on each queue manager instance unless they are explicitly transmission queues.
USAGE(XMITQ) marks the queue as part of inter-queue-manager messaging. When an application puts to a remote queue definition, the queue manager moves the message onto the transmission queue named in the remote object's XMITQ attribute (or derived from cluster routing). A sender channel with matching XMITQ drains messages and sends them to the partner. Depth on an XMITQ during a channel outage is expected store-and-forward backlog—not necessarily “no consumer on an app queue.”
| Aspect | USAGE(NORMAL) | USAGE(XMITQ) |
|---|---|---|
| Purpose | Application work and replies | Hold messages for channel to remote QM |
| Typical putter | Application programs | Queue manager (routing) |
| Typical getter | Application consumers | Sender channel |
| Monitoring | Consumer lag, poison, backlog | Channel health, WAN outage |
Application puts to QREMOTE('ORDERS.TO.HUB'). The definition specifies RNAME, RQMNAME, and XMITQ('QM_HUB.XMIT'). The queue manager stores the message on local queue QM_HUB.XMIT which must have USAGE(XMITQ). Channel TO.HUB with CHLTYPE(SDR) and XMITQ('QM_HUB.XMIT') forwards to the hub. If QM_HUB.XMIT were USAGE(NORMAL), configuration is inconsistent—fix the definition before go-live. DISPLAY QLOCAL USAGE is a quick audit field when onboarding a new partner connection.
1234567DEFINE QLOCAL('QM_HUB.XMIT') REPLACE USAGE(XMITQ) + MAXDEPTH(500000) DEFPSIST(YES) DESCR('XMIT to QM_HUB') DEFINE QREMOTE('ORDERS.TO.HUB') REPLACE + RNAME('ORDERS.IN') RQMNAME('QM_HUB') XMITQ('QM_HUB.XMIT') DEFINE CHANNEL('TO.HUB') CHLTYPE(SDR) TRPTYPE(TCP) + CONNAME('hub.example.com(1414)') XMITQ('QM_HUB.XMIT') REPLACE DISPLAY QLOCAL('QM_HUB.XMIT') USAGE CURDEPTH
Direct application puts to a transmission queue bypass remote queue naming, security, and reporting conventions. Operations cannot map depth to a business flow name on dashboards keyed to QREMOTE. Cluster routing and uniform MQRFH2 headers may be wrong. Reserve XMITQ for queue-manager-directed traffic. If you need a local staging queue before forward, use USAGE(NORMAL) and bridge with an application or channel design documented in your integration architecture.
Transmission queues need MAXDEPTH and disk planning for longest channel outage × put rate, as covered in store-and-forward tutorials. DEFPSIST(YES) is standard for business traffic. Triggering on XMITQ is usually inappropriate. GET and PUT attributes still matter for channel internal access but differ from application consumer patterns. Some teams use separate XMITQ per partner for isolation; others one XMITQ per remote queue manager—USAGE(XMITQ) on each.
In cluster configurations, cluster transmission queues may be created with USAGE(XMITQ) when queue managers join cluster routes. Cluster repository and CLUSQMGR definitions influence which XMITQ names appear. When DISPLAY CLUSQMGR or cluster-sender channels show retries, check the associated cluster XMITQ depth and USAGE. Mixing cluster and non-cluster paths to the same partner is a common source of duplicate XMITQ definitions—standardize naming conventions.
NORMAL is the mailbox at your desk where you read letters. XMITQ is the outbound mail cart waiting for the truck (channel) to take bags to another city (remote queue manager). You write letters to people's names (remote queues); the post office sorts them into the right cart—you do not throw letters directly into the truck cart unless you are the post office.
Sketch QREMOTE, XMITQ with USAGE(XMITQ), and SDR channel for one remote put path.
XMITQ depth grows; channel status RETRY. List four checks unrelated to application consumers.
Why is USAGE(NORMAL) wrong for QM_PARTNER.XMIT?
1. USAGE(XMITQ) identifies:
2. Application business messages normally use:
3. Sender channel XMITQ attribute must name:
4. Remote puts route to XMITQ via: