1---2name: ibm-mq3description: Use when installing, configuring, or managing IBM MQ on RHEL 9 — queue manager creation and administration, queues (local/remote/alias/model), channels (sender/receiver/server-conn/client-conn), listeners, triggers, clustering, publish/subscribe, MQ security (TLS, channel auth rules, OAM), dead-letter queue handling, MQ Explorer, runmqsc commands, MQ developer patterns (JMS, MQI, Python/pymqi, .NET), performance tuning, systemd services, SELinux contexts, and firewalld rules. Part of the ibm-* skill family.4---56# IBM MQ on Red Hat Enterprise Linux 978Companion skill to `rhel-server-admin`. For other IBM workloads see: `ibm-websphere`, `db2-rhel`, `db2-mainframe`. For enterprise connectors see: `python-enterprise-connectors`.910<HARD-RULE>11Always define and monitor a dead-letter queue for every queue manager — undeliverable messages without a DLQ are silently discarded.12</HARD-RULE>1314<HARD-RULE>15Never use MCAUSER('mqm') on SVRCONN channels — it grants full admin access; use specific service accounts.16</HARD-RULE>1718<HARD-RULE>19Always configure CHLAUTH before exposing queue managers to the network — default MQ allows unauthenticated connections.20</HARD-RULE>2122<HARD-RULE>23Never change channel names or XMITQ names on active sender/receiver pairs without coordinating both ends — mismatched definitions cause channel failures and message loss.24</HARD-RULE>2526---2728## Reference Files2930Detailed code examples, patterns, and configuration are in the reference files below. Read the relevant file when working on that area.3132| File | Covers |33|---|---|34| [channels-clustering-pubsub.md](channels-clustering-pubsub.md) | channels, listeners/triggers, MQ clustering, and publish/subscribe messaging |35| [install-queues.md](install-queues.md) | MQ architecture, RHEL 9 installation, queue manager administration, and queue types (local, remote, alias, model) |36| [security-dev-performance-rhel.md](security-dev-performance-rhel.md) | MQ security, developer patterns (JMS, Spring JMS, MQ classes for Java), performance tuning, monitoring, and RHEL-specific configuration |3738---3940---4142## Anti-Patterns4344| Anti-Pattern | Why It Fails | Correct Approach |45|---|---|---|46| Not setting MAXDEPTH and queue-full alerts | Queues fill up silently; producers block or lose messages; cascading failures across applications | Set MAXDEPTH based on peak throughput; configure events (QDPHIEV/QDPLOEV) and monitoring alerts |47| Using SYSTEM.DEFAULT.* queues for application traffic | Default queues lack proper security, monitoring, and tuning; shared with system traffic | Create dedicated application queues with explicit MAXDEPTH, MAXMSGL, and security profiles |48| Running all channels with SVRCONN and no channel authentication | Any client can connect to any queue manager; no audit trail; wide-open security posture | Configure CHLAUTH rules; use TLS on all channels; restrict connections by IP and user |49| Not configuring dead-letter queue (DLQ) handling | Undeliverable messages pile up in DLQ with no processing; eventually fills disk or hits MAXDEPTH | Configure DLQ handler (runmqdlq) with rules for retry, alert, and discard; monitor DLQ depth |50| Persistent messages on high-throughput queues without log tuning | Every persistent message forces a log write; default log sizes cause log-full conditions under load | Size logs (LOGPRIMARY, LOGSECONDARY) for peak message rate; consider non-persistent for idempotent workloads |5152---5354## Related Skills5556| Workload | Skill |57|---|---|58| Core RHEL admin (dnf, SELinux, firewalld, LVM) | `rhel-server-admin` |59| WebSphere Application Server | `ibm-websphere` |60| DB2 on RHEL | `db2-rhel` |61| DB2 on z/OS | `db2-mainframe` |62| Python MQ connectors | `python-enterprise-connectors` |63| Docker / Podman containers | `rhel-docker-host` |64| Prometheus, Grafana, logging | `rhel-monitoring` |65| IBM mainframe (JCL, VSAM, TSO) | `ibm-mainframe` |