1. Tipos de fila

TipoMQSCFunção
Local QueueQLOCALFila física — as mensagens residem aqui neste Queue Manager
Remote QueueQREMOTEAlias para fila em outro Queue Manager — direciona para canal de transmissão
Alias QueueQALIASApelido para outra fila local — permite múltiplos nomes para a mesma fila
Model QueueQMODELTemplate para criar filas dinâmicas — não armazena mensagens
Transmission QueueQLOCAL com USAGE(XMITQ)Fila intermediária que armazena mensagens a caminho de outro QM
Dead Letter QueueQLOCALRepositório de mensagens que não puderam ser entregues

2. QLOCAL — filas locais

A fila local é o tipo mais fundamental — onde as mensagens realmente ficam armazenadas:

/* Criar fila local simples */ DEFINE QLOCAL(FILA.PEDIDOS) DESCR('Fila de pedidos do sistema de vendas') MAXDEPTH(50000) MAXMSGL(4194304) DEFPSIST(YES) GET(ENABLED) PUT(ENABLED) /* Criar Dead Letter Queue */ DEFINE QLOCAL(SISTEMA.DLQ) DESCR('Dead Letter Queue do sistema') MAXDEPTH(999999999) DEFPSIST(YES) /* Criar transmission queue */ DEFINE QLOCAL(TO.QM2) USAGE(XMITQ) DEFPSIST(YES)

Parâmetros importantes de QLOCAL:

ParâmetroDescrição
MAXDEPTH(n)Número máximo de mensagens na fila simultaneamente
MAXMSGL(n)Tamanho máximo de mensagem em bytes (padrão: 4MB)
DEFPSIST(YES/NO)Persistência padrão — YES = gravada em disco (sobrevive a reinicialização)
GET(ENABLED/DISABLED)Permite ou bloqueia leituras da fila
PUT(ENABLED/DISABLED)Permite ou bloqueia gravações na fila
USAGE(NORMAL/XMITQ)XMITQ = fila de transmissão para canais
BOQNAME(fila)Backout Queue — destino de mensagens após N falhas de processamento
BOTHRESH(n)Backout threshold — número de tentativas antes de mover para BOQNAME

💡 DEFPSIST e performance

DEFPSIST(YES) garante que mensagens sobrevivem a uma queda do Queue Manager — elas são gravadas em disco antes de o PUT retornar. DEFPSIST(NO) (non-persistent) é muito mais rápido mas perde mensagens em caso de falha. Para sistemas bancários, sempre use YES em filas de negócio. Use NO apenas para dados temporários como dados de sessão.

3. QREMOTE e QALIAS

A fila remota define um destino em outro Queue Manager — quando uma aplicação faz PUT para ela, o MQ encaminha a mensagem pelo canal adequado:

/* Fila remota: PUT aqui envia para FILA.PEDIDOS no QM2 via XMITQ TO.QM2 */ DEFINE QREMOTE(PEDIDOS.REMOTO) RNAME('FILA.PEDIDOS') RQMNAME('QM2') XMITQ('TO.QM2') DESCR('Encaminha pedidos para QM2') /* Fila alias: PUT/GET aqui opera em FILA.PEDIDOS (mesmo QM) */ DEFINE QALIAS(PEDIDOS.V2) TARGET('FILA.PEDIDOS') DESCR('Alias para compatibilidade com apps legadas')

Alias queues são muito úteis em migrações — quando você renomeia uma fila, cria um alias com o nome antigo para não quebrar aplicações que ainda usam o nome original.

4. QMODEL — filas dinâmicas

Filas dinâmicas são criadas em tempo de execução a partir de um modelo. São usadas para filas de resposta — cada aplicação cria sua própria fila temporária para receber a resposta de uma requisição:

/* Criar modelo para filas de resposta temporárias */ DEFINE QMODEL(MODELO.RESPOSTA) DEFTYPE(TEMPDYN) MAXDEPTH(100) DEFPSIST(NO) DESCR('Template para filas de resposta') /* Aplicação cria fila dinâmica no MQOPEN com MODELO.RESPOSTA como base */ /* O MQ cria automaticamente uma fila com nome único (ex: AMQ.xxxxxxxx) */

Tipos de fila dinâmica (DEFTYPE):

DEFTYPEComportamento
TEMPDYNTemporária — deletada automaticamente quando o MQCLOSE for chamado
PERMDYNPermanente — persiste após o MQCLOSE; deve ser deletada explicitamente
SHAREDYNCompartilhada — acessível por outras aplicações enquanto existir (z/OS Sysplex)

5. DISPLAY — consultando objetos

O comando DISPLAY consulta o estado atual de qualquer objeto MQ:

/* Listar todas as filas locais */ DISPLAY QLOCAL(*) /* Ver detalhes de uma fila específica */ DISPLAY QLOCAL(FILA.PEDIDOS) ALL /* Ver status atual da fila (mensagens, handles abertos) */ DISPLAY QSTATUS(FILA.PEDIDOS) Saída de DISPLAY QSTATUS: QUEUE(FILA.PEDIDOS) TYPE(QLOCAL) CURDEPTH(42) OPPROCS(2) IPPROCS(1) LGETDATE(2026-06-18) LGETTIME(14.32.01) LPUTDATE(2026-06-18) LPUTTIME(14.32.55) /* Alterar atributo de uma fila */ ALTER QLOCAL(FILA.PEDIDOS) GET(DISABLED) /* Deletar uma fila (só funciona se estiver vazia) */ DELETE QLOCAL(FILA.TESTE) /* Para deletar mesmo com mensagens: */ DELETE QLOCAL(FILA.TESTE) PURGE

6. Queue Manager — atributos e MQSC

O Queue Manager também é um objeto com atributos configuráveis:

/* Ver atributos do Queue Manager */ DISPLAY QMGR ALL Saída (principais campos): QMNAME(CSQ1) DESCR('Queue Manager de Producao') DEADQ(SISTEMA.DLQ) MAXMSGL(104857600) MAXDEPTH(640000) PLATFORM(ZOS) VERSION(09.04.00) CCSID(500) /* Configurar a Dead Letter Queue do QM */ ALTER QMGR DEADQ(SISTEMA.DLQ) /* Executar MQSC via TSO — programa CSQUTIL */ //MQSCJOB JOB ... //STEP1 EXEC PGM=CSQUTIL,PARM='CSQ1' //SYSPRINT DD SYSOUT=* //SYSIN DD * COMMAND DISPLAY QLOCAL(*) CURDEPTH /*