{"id":1343,"date":"2026-08-20T11:49:29","date_gmt":"2026-08-20T17:49:29","guid":{"rendered":"https:\/\/folken-it.com\/?p=1343"},"modified":"2026-08-20T11:50:32","modified_gmt":"2026-08-20T17:50:32","slug":"comandos-esenciales-para-administrar-ibm-mq-queue-managers","status":"publish","type":"post","link":"https:\/\/folken-it.com\/?p=1343","title":{"rendered":"Comandos esenciales para administrar IBM MQ Queue Managers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">IBM MQ contin\u00faa siendo una tecnolog\u00eda fundamental en muchas arquitecturas empresariales donde las aplicaciones necesitan intercambiar mensajes de manera <strong>segura, confiable y as\u00edncrona<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si trabajas como administrador de middleware, Production Support, DevOps o SRE, conocer los principales comandos de IBM MQ puede ayudarte a identificar y resolver r\u00e1pidamente problemas relacionados con <strong>Queue Managers, queues, channels, listeners y mensajes<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta gu\u00eda veremos algunos de los comandos que considero m\u00e1s \u00fatiles en la administraci\u00f3n diaria de IBM MQ sobre Linux\/Unix.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Mostrar los Queue Managers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los primeros comandos que debemos conocer es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dspmq\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>QMNAME(QM_PROD)     STATUS(Running)\nQMNAME(QM_TEST)     STATUS(Ended normally)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos consultar informaci\u00f3n de un Queue Manager espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dspmq -m QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando nos permite comprobar r\u00e1pidamente si el Queue Manager se encuentra ejecut\u00e1ndose.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Iniciar un Queue Manager<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>strmqm QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s podemos comprobar su estado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dspmq -m QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Resultado esperado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>QMNAME(QM_PROD) STATUS(Running)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Detener un Queue Manager<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una parada controlada puede realizarse con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>endmqm QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una opci\u00f3n habitual es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>endmqm -w QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>-w<\/code> espera a que el Queue Manager termine antes de devolver el control al shell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">IBM MQ tambi\u00e9n dispone de modos de terminaci\u00f3n m\u00e1s agresivos, pero en producci\u00f3n no deber\u00edan utilizarse autom\u00e1ticamente sin entender el impacto sobre aplicaciones, transacciones y mensajes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Entrar a MQSC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las herramientas m\u00e1s importantes para un administrador IBM MQ es <code>runmqsc<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>runmqsc QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s veremos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Starting MQSC for queue manager QM_PROD.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora podemos ejecutar comandos MQSC como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QMGR\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para salir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>END\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos utilizar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>QUIT\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Mostrar informaci\u00f3n del Queue Manager<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro de <code>runmqsc<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QMGR\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para mostrar todos los atributos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QMGR ALL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto proporciona informaci\u00f3n importante sobre la configuraci\u00f3n del Queue Manager.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Mostrar todas las queues<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QUEUE(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Forma abreviada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DIS Q(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, en ambientes grandes puede generar mucha informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para consultar una queue espec\u00edfica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(APP.REQUEST.Q)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Forma abreviada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DIS QL(APP.REQUEST.Q)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Revisar la profundidad de una queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los comandos m\u00e1s importantes para Production Support:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(APP.REQUEST.Q) CURDEPTH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AMQ8409I: Display Queue details.\n   QUEUE(APP.REQUEST.Q)\n   TYPE(QLOCAL)\n   CURDEPTH(1250)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>CURDEPTH<\/code> indica cu\u00e1ntos mensajes existen actualmente en la queue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n resulta \u00fatil revisar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(APP.REQUEST.Q) CURDEPTH MAXDEPTH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CURDEPTH(1250)\nMAXDEPTH(5000)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto permite determinar qu\u00e9 tan cerca se encuentra la queue de su capacidad m\u00e1xima.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Revisar procesos conectados a una queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando una queue comienza a crecer, queremos saber si existen productores y consumidores.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QSTATUS(APP.REQUEST.Q) IPPROCS OPPROCS CURDEPTH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Los atributos principales son:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IPPROCS\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00famero de aplicaciones que tienen la queue abierta para <strong>input<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OPPROCS\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00famero de aplicaciones que tienen la queue abierta para <strong>output<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CURDEPTH(5000)\nIPPROCS(0)\nOPPROCS(3)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es una pista muy importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tenemos productores enviando mensajes, pero aparentemente ning\u00fan consumidor proces\u00e1ndolos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Mostrar todas las local queues<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Forma abreviada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DIS QL(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Queues remotas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QREMOTE(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QALIAS(*)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Revisar una Transmission Queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">En arquitecturas distribuidas IBM MQ, las transmission queues son fundamentales.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(QM_REMOTE.XMITQ) CURDEPTH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si la <code>CURDEPTH<\/code> comienza a crecer, puede existir un problema con el sender channel o con la conectividad hacia el Queue Manager remoto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un flujo conceptual ser\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application\n     \u2193\nRemote Queue\n     \u2193\nTransmission Queue\n     \u2193\nSender Channel\n     \u2193\nNetwork\n     \u2193\nReceiver Channel\n     \u2193\nRemote Queue Manager\n     \u2193\nLocal Queue\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. Mostrar channels<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHANNEL(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Forma abreviada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DIS CHL(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Consultar un channel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHANNEL(TO.QM_REMOTE)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para conocer el estado de channels activos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHSTATUS(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DIS CHS(*)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Consultar un channel espec\u00edfico<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHSTATUS(TO.QM_REMOTE)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos encontrar estados como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RUNNING\nRETRYING\nSTOPPED\nINACTIVE\nBINDING\nINITIALIZING\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para troubleshooting, <code>RETRYING<\/code> es especialmente importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si encontramos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>STATUS(RETRYING)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">debemos investigar por qu\u00e9 el sender channel no logra establecer o mantener la comunicaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Iniciar un channel<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>START CHANNEL(TO.QM_REMOTE)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHSTATUS(TO.QM_REMOTE)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Detener un channel<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>STOP CHANNEL(TO.QM_REMOTE)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En producci\u00f3n debemos entender primero el impacto, ya que detener un channel puede interrumpir el flujo de mensajes entre Queue Managers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Revisar la conexi\u00f3n del channel<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Un comando muy \u00fatil:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHSTATUS(TO.QM_REMOTE) ALL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos enfocarnos en determinados atributos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CHSTATUS(TO.QM_REMOTE) STATUS CONNAME XMITQ\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto nos ayuda a relacionar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Channel\n   \u2193\nConnection\n   \u2193\nTransmission Queue\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Listeners<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Mostrar listeners:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY LISTENER(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Consultar su estado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY LSSTATUS(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Listener espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY LSSTATUS(LISTENER.TCP)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Iniciar un listener<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>START LISTENER(LISTENER.TCP)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Detenerlo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>STOP LISTENER(LISTENER.TCP)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Revisar conexiones al Queue Manager<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CONN(*)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando puede generar bastante informaci\u00f3n en sistemas grandes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos utilizar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY CONN(*) TYPE(CONN)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para troubleshooting, las conexiones permiten investigar qu\u00e9 aplicaciones o procesos est\u00e1n conectados al Queue Manager.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Revisar el estado de una queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de mis comandos favoritos para troubleshooting:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QSTATUS(APP.REQUEST.Q) ALL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O solamente los atributos que necesitamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QSTATUS(APP.REQUEST.Q) CURDEPTH IPPROCS OPPROCS\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto proporciona r\u00e1pidamente una imagen de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mensajes\n+\nProductores\n+\nConsumidores\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. Consultar mensajes sin desarrollar una aplicaci\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">IBM MQ proporciona <code>amqsbcg<\/code>, una utilidad de ejemplo muy conocida para examinar mensajes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>amqsbcg APP.REQUEST.Q QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puede ser \u00fatil para troubleshooting porque permite navegar mensajes sin consumirlos como lo har\u00eda una aplicaci\u00f3n normal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En producci\u00f3n debemos tener cuidado al mostrar mensajes porque pueden contener informaci\u00f3n sensible.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. Colocar un mensaje de prueba<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Otra utilidad de ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>amqsput APP.REQUEST.Q QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Escribimos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Test message from Folken IT\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Presionamos Enter y posteriormente una l\u00ednea vac\u00eda para terminar.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. Leer mensajes<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>amqsget APP.REQUEST.Q QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Atenci\u00f3n:<\/strong> a diferencia de browsing, <code>amqsget<\/code> puede consumir\/eliminar mensajes de la queue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por esa raz\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>amqsbcg\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">y:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>amqsget\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">no deben confundirse durante troubleshooting en producci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">23. Revisar Dead Letter Queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Primero podemos identificar la DLQ configurada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QMGR DEADQ\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DEADQ(SYSTEM.DEAD.LETTER.QUEUE)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si <code>CURDEPTH<\/code> es mayor que cero, debemos investigar por qu\u00e9 existen mensajes que MQ no pudo entregar correctamente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">24. Error logs del Queue Manager<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">En Linux\/Unix, una ubicaci\u00f3n habitual de los errores del Queue Manager es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/mqm\/qmgrs\/&lt;QMGR&gt;\/errors\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Archivos t\u00edpicos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AMQERR01.LOG\nAMQERR02.LOG\nAMQERR03.LOG\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -100 \/var\/mqm\/qmgrs\/QM_PROD\/errors\/AMQERR01.LOG\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Seguirlo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/mqm\/qmgrs\/QM_PROD\/errors\/AMQERR01.LOG\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Estos logs son fundamentales para investigar errores de channels, seguridad, recursos, networking y otros componentes de MQ.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">25. Crear una local queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro de <code>runmqsc<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DEFINE QLOCAL(APP.REQUEST.Q)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con atributos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DEFINE QLOCAL(APP.REQUEST.Q) MAXDEPTH(10000) DEFPSIST(YES)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">26. Modificar una queue<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER QLOCAL(APP.REQUEST.Q) MAXDEPTH(20000)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QLOCAL(APP.REQUEST.Q) MAXDEPTH\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">27. Limpiar una queue<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">IBM MQ permite eliminar todos los mensajes de una local queue:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CLEAR QLOCAL(APP.REQUEST.Q)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este es un comando que debes tratar con <strong>much\u00edsimo cuidado<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En producci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CLEAR QLOCAL(...)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">puede provocar p\u00e9rdida irreversible de mensajes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nunca deber\u00eda utilizarse simplemente porque una queue tiene muchos mensajes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero debemos entender <strong>por qu\u00e9 est\u00e1 creciendo<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">28. Comandos que deber\u00edas memorizar<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s comenzando con IBM MQ, recomiendo dominar primero estos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dspmq\n\nstrmqm QM_PROD\n\nendmqm -w QM_PROD\n\nrunmqsc QM_PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro de MQSC:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DISPLAY QMGR\n\nDISPLAY QLOCAL(*)\n\nDISPLAY QLOCAL(APP.Q) CURDEPTH MAXDEPTH\n\nDISPLAY QSTATUS(APP.Q) CURDEPTH IPPROCS OPPROCS\n\nDISPLAY CHANNEL(*)\n\nDISPLAY CHSTATUS(*)\n\nDISPLAY CHSTATUS(CHANNEL.NAME) ALL\n\nDISPLAY LISTENER(*)\n\nDISPLAY LSSTATUS(*)\n\nDISPLAY CONN(*)\n\nDISPLAY QMGR DEADQ\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y desde Linux:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/mqm\/qmgrs\/QM_PROD\/errors\/AMQERR01.LOG\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Metodolog\u00eda para troubleshooting<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Conocer comandos es importante, pero conocer el orden en que debemos investigar es todav\u00eda m\u00e1s importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que una aplicaci\u00f3n reporta:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;Los mensajes no est\u00e1n llegando al sistema remoto.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos investigar de esta manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u00bfQueue Manager est\u00e1 RUNNING?\n        \u2193\ndspmq\n        \u2193\n\u00bfEst\u00e1 creciendo la application queue?\n        \u2193\nCURDEPTH\n        \u2193\n\u00bfExisten consumidores?\n        \u2193\nIPPROCS \/ OPPROCS\n        \u2193\n\u00bfEst\u00e1 creciendo la XMITQ?\n        \u2193\nTransmission Queue\n        \u2193\n\u00bfSender Channel est\u00e1 RUNNING?\n        \u2193\nCHSTATUS\n        \u2193\n\u00bfListener remoto est\u00e1 disponible?\n        \u2193\nListener \/ Network\n        \u2193\n\u00bfExisten errores?\n        \u2193\nAMQERR01.LOG\n        \u2193\n\u00bfHay mensajes en la DLQ?\n        \u2193\nDEADQ\n        \u2193\nRoot Cause Analysis\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, si encontramos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>XMITQ CURDEPTH(15000)\n\nCHANNEL STATUS(RETRYING)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ya tenemos una pista muy importante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema probablemente no se encuentra en la aplicaci\u00f3n productora.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los mensajes est\u00e1n llegando al Queue Manager, pero MQ tiene dificultades para enviarlos al sistema remoto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora debemos investigar el channel, networking, DNS, listener, TLS, autenticaci\u00f3n o disponibilidad del Queue Manager remoto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La regla m\u00e1s importante<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando una queue comienza a crecer, no debemos asumir inmediatamente que:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;MQ est\u00e1 fallando.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">La profundidad de la queue es un <strong>s\u00edntoma<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La causa podr\u00eda encontrarse en:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>la aplicaci\u00f3n consumidora;<\/li>\n\n\n\n<li>un channel;<\/li>\n\n\n\n<li>networking;<\/li>\n\n\n\n<li>TLS;<\/li>\n\n\n\n<li>autenticaci\u00f3n\/autorizaci\u00f3n;<\/li>\n\n\n\n<li>el Queue Manager remoto;<\/li>\n\n\n\n<li>una base de datos utilizada por el consumidor;<\/li>\n\n\n\n<li>un sistema downstream;<\/li>\n\n\n\n<li>mensajes problem\u00e1ticos;<\/li>\n\n\n\n<li>capacidad o rendimiento.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El trabajo de un administrador de IBM MQ no consiste \u00fanicamente en iniciar Queue Managers y limpiar queues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consiste en comprender <strong>el flujo completo del mensaje<\/strong>, identificar d\u00f3nde se interrumpi\u00f3 y resolver el problema sin poner en riesgo los mensajes que todav\u00eda est\u00e1n en tr\u00e1nsito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfCuantos queu managers te ha tocado administrar y que versiones?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>IBM MQ contin\u00faa siendo una tecnolog\u00eda fundamental en muchas arquitecturas empresariales donde las aplicaciones necesitan intercambiar mensajes de manera segura, confiable y [&hellip;]<\/p>\n","protected":false},"author":62,"featured_media":1344,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-1343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mq"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/folken-it.com\/wp-content\/uploads\/2026\/08\/mq.png?fit=1536%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1343"}],"version-history":[{"count":2,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1343\/revisions"}],"predecessor-version":[{"id":1346,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1343\/revisions\/1346"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/media\/1344"}],"wp:attachment":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}