1. Segurança — RACF e MQ

O MQ no z/OS integra com RACF para controlar quem pode acessar filas, canais e o próprio Queue Manager. Os perfis são criados na classe RACF MQADMIN, MQQUEUE e MQPROC:

/* Ativar classes MQ no RACF */ SETROPTS CLASSACT(MQADMIN MQQUEUE MQPROC) SETROPTS RACLIST(MQADMIN MQQUEUE MQPROC) /* Conceder acesso a uma fila para um grupo de usuários */ /* Perfil: CSQ1.FILA.PEDIDOS (QMgr.NomeDaFila) */ RDEFINE MQQUEUE CSQ1.FILA.PEDIDOS UACC(NONE) OWNER(MQADMIN) PERMIT CSQ1.FILA.PEDIDOS CLASS(MQQUEUE) ID(GRPPEDIDOS) ACCESS(UPDATE) /* Ativar segurança no Queue Manager */ ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) REFRESH SECURITY TYPE(CONNAUTH) /* Forçar refresh das classes RACF */ SETROPTS RACLIST(MQQUEUE) REFRESH

Níveis de acesso MQ no RACF:

Nível RACFOperações MQ permitidas
READMQGET (leitura de mensagens)
UPDATEMQPUT e MQGET (leitura e escrita)
CONTROLUPDATE + controle de fila (purge, get/put enable/disable)
ALTERAcesso total — inclui ALTER e DELETE da fila

2. Channel Authentication (CHLAUTH)

O CHLAUTH controla quais endereços IP e quais usuários podem conectar via cada canal SVRCONN — uma camada de segurança extra além do RACF:

/* Bloquear todas as conexões por padrão */ SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('*') ACTION(ADD) /* Permitir apenas conexões do servidor de aplicação */ SET CHLAUTH(SISTEMA.SVRCONN) TYPE(ADDRESSMAP) ADDRESS('192.168.1.100') MCAUSER('SVCAPP01') ACTION(ADD) /* Ver regras CHLAUTH ativas */ DISPLAY CHLAUTH(*) ALL /* Verificar se CHLAUTH está ativo no QM */ DISPLAY QMGR CHLAUTH

3. Monitoramento de filas e canais

Comandos essenciais para o dia a dia de monitoramento:

/* Profundidade atual de todas as filas locais */ DISPLAY QLOCAL(*) CURDEPTH /* Filas com mensagens acima de um limite */ DISPLAY QLOCAL(*) WHERE(CURDEPTH GT 1000) /* Status de todos os canais */ DISPLAY CHSTATUS(*) STATUS MSGS BYTES /* Canais com problema */ DISPLAY CHSTATUS(*) WHERE(STATUS NE RUNNING) /* Handles de fila abertos agora */ DISPLAY QSTATUS(FILA.PEDIDOS) OPPROCS IPPROCS /* OPPROCS = handles de output (PUT), IPPROCS = input (GET) */ /* Conexões ativas ao Queue Manager */ DISPLAY CONN(*) ALL

4. Troubleshooting comum

Canal em estado IN-DOUBT:

/* Canal IN-DOUBT significa unidade de trabalho não resolvida */ DISPLAY CHSTATUS(QM1.TO.QM2) INDOUBT /* Resolver forçando commit ou rollback */ RESOLVE CHANNEL(QM1.TO.QM2) ACTION(COMMIT) /* ou */ RESOLVE CHANNEL(QM1.TO.QM2) ACTION(BACKOUT)

Fila acumulando mensagens (consumidor parou):

/* 1. Verificar profundidade */ DISPLAY QSTATUS(FILA.PEDIDOS) CURDEPTH IPPROCS /* 2. Verificar se GET está habilitado */ DISPLAY QLOCAL(FILA.PEDIDOS) GET /* 3. Se GET estiver DISABLED — habilitar */ ALTER QLOCAL(FILA.PEDIDOS) GET(ENABLED) /* 4. Verificar DLQ — mensagens podem estar lá */ DISPLAY QSTATUS(SISTEMA.DLQ) CURDEPTH

Mensagens presas — excederam BOTHRESH:

/* Ver fila de backout */ DISPLAY QLOCAL(FILA.PEDIDOS) BOQNAME BOTHRESH DISPLAY QSTATUS(FILA.PEDIDOS.BACKOUT) CURDEPTH Mensagens na backout queue = mensagens que falharam N vezes → investigar o motivo da falha antes de reprocessar

5. Backup e manutenção

/* Exportar definições do QM para script MQSC */ /* No z/OS, usar CSQUTIL para extrair definições */ //MQEXPORT JOB ... //STEP1 EXEC PGM=CSQUTIL,PARM='CSQ1' //SYSPRINT DD SYSOUT=* //CMDIN DD * COMMAND DDNAME(CMDOUT) DISPLAY QLOCAL(*) ALL DISPLAY CHANNEL(*) ALL /* //CMDOUT DD DSN=BACKUP.MQ.DEFS,DISP=(NEW,CATLG) /* Parar e reiniciar o Queue Manager (console z/OS) */ /CSQ1MSTR STOP QMGR MODE(QUIESCE) Para de forma limpa /S CSQ1MSTR Reinicia

6. CSQUTIL — utilitário batch MQ

O CSQUTIL é o canivete suíço da administração MQ no z/OS. Além de executar MQSC, tem funções específicas:

/* CSQUTIL — copiar mensagens de uma fila para dataset */ //MQCOPY JOB ... //STEP1 EXEC PGM=CSQUTIL,PARM='CSQ1' //SYSPRINT DD SYSOUT=* //MSGS DD DSN=BACKUP.MQ.MSGS,DISP=(NEW,CATLG) //SYSIN DD * COPY QNAME(FILA.PEDIDOS) TOFILE(MSGS) BROWSE /* /* BROWSE = apenas lê sem remover; sem BROWSE = destrutivo */ /* Restaurar mensagens de dataset para fila */ //SYSIN DD * COPY FROMFILE(MSGS) QNAME(FILA.PEDIDOS) /*

💡 Próximos passos em IBM MQ

Com esta trilha você tem base para trabalhar com MQ em ambientes mainframe reais. Os tópicos avançados incluem: MQ Clusters (balanceamento automático de carga entre QMs), MQ Managed File Transfer (MFT) para transferência de arquivos grandes, IBM MQ Advanced Message Security (AMS) para criptografia ponto a ponto de mensagens, e integração com IBM Event Streams (Kafka) para arquiteturas event-driven modernas.