Mostrar mensagens com a etiqueta mensageria. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta mensageria. Mostrar todas as mensagens

terça-feira, 12 de fevereiro de 2019

🟦 Exemplo de Programa COBOL – Tratamento de Mensagem IBM MQ

 


🟦 Exemplo de Programa COBOL – Tratamento de Mensagem IBM MQ


🎯 O que este programa faz

  1. Conecta ao Queue Manager

  2. Abre uma fila de entrada

  3. Lê uma mensagem (MQGET)

  4. Trata o conteúdo

  5. Atualiza dados (simulado)

  6. Faz COMMIT

  7. Fecha fila e desconecta


🧱 Premissas do exemplo

  • Execução:

    • Batch ou CICS (a lógica é a mesma)

  • Fila:

    • QUEUE.IN

  • Queue Manager:

    • QMGR01

  • Mensagem:

    • Texto simples

  • Modelo:

    • MQI síncrono

    • Commit explícito


📦 COPYBOOKS NECESSÁRIOS

COPY CMQC. COPY CMQX.

📌 Esses copybooks vêm do IBM MQ for z/OS
Normalmente ficam em SCSQCOBC.


🧠 Estrutura do Programa


🔹 IDENTIFICATION DIVISION

IDENTIFICATION DIVISION. PROGRAM-ID. MQCONSUM.

🔹 DATA DIVISION

DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-QMGR-NAME PIC X(48) VALUE 'QMGR01'. 01 WS-QUEUE-NAME PIC X(48) VALUE 'QUEUE.IN'. 01 WS-HCONN PIC S9(9) COMP. 01 WS-HOBJ PIC S9(9) COMP. 01 WS-COMPCODE PIC S9(9) COMP. 01 WS-REASON PIC S9(9) COMP. 01 WS-MSG-LEN PIC S9(9) COMP. 01 WS-BUFFER. 05 WS-MSG PIC X(1024). 01 WS-MD LIKE MQMD. 01 WS-GMO LIKE MQGMO. 01 WS-OD LIKE MQOD.

🔹 PROCEDURE DIVISION


1️⃣ Conectar ao Queue Manager

CALL 'MQCONN' USING WS-QMGR-NAME WS-HCONN WS-COMPCODE WS-REASON. IF WS-COMPCODE NOT = MQCC-OK DISPLAY 'ERRO MQCONN - REASON: ' WS-REASON GO TO FIM-PROGRAMA END-IF.

📌 Easter egg:
Se falhar aqui, o problema não é a fila, é ambiente.


2️⃣ Abrir a fila

MOVE MQOD-DEFAULT TO WS-OD. MOVE WS-QUEUE-NAME TO WS-OD-OBJECTNAME. MOVE MQOO-INPUT-AS-Q-DEF TO WS-OD-OPTIONS. CALL 'MQOPEN' USING WS-HCONN WS-OD WS-HOBJ WS-COMPCODE WS-REASON. IF WS-COMPCODE NOT = MQCC-OK DISPLAY 'ERRO MQOPEN - REASON: ' WS-REASON GO TO DESCONECTA END-IF.

3️⃣ Ler a mensagem (MQGET)

MOVE MQMD-DEFAULT TO WS-MD. MOVE MQGMO-DEFAULT TO WS-GMO. MOVE MQGMO-WAIT TO WS-GMO-OPTIONS. MOVE 5000 TO WS-GMO-WAITINTERVAL. CALL 'MQGET' USING WS-HCONN WS-HOBJ WS-MD WS-GMO LENGTH OF WS-BUFFER WS-BUFFER WS-MSG-LEN WS-COMPCODE WS-REASON. IF WS-COMPCODE = MQCC-FAILED IF WS-REASON = MQRC-NO-MSG-AVAILABLE DISPLAY 'SEM MENSAGEM NA FILA' GO TO FECHA-FILA ELSE DISPLAY 'ERRO MQGET - REASON: ' WS-REASON GO TO ROLLBACK END-IF END-IF.

📌 Regra de ouro:

MQRC 2033 não é erro. É silêncio.


4️⃣ Tratar a mensagem

DISPLAY 'MENSAGEM RECEBIDA: ' WS-MSG(1:WS-MSG-LEN). *> Aqui você trataria o conteúdo: *> Parse, valida, chama DB2, CICS, etc.

5️⃣ Commit da transação

CALL 'MQCMIT' USING WS-HCONN WS-COMPCODE WS-REASON. IF WS-COMPCODE NOT = MQCC-OK DISPLAY 'ERRO MQCMIT - REASON: ' WS-REASON GO TO ROLLBACK END-IF.

📌 Easter egg clássico:

90% dos “problemas de MQ” são COMMIT esquecido.


6️⃣ Fechar fila e desconectar

FECHA-FILA. CALL 'MQCLOSE' USING WS-HCONN WS-HOBJ MQCO-NONE WS-COMPCODE WS-REASON. DESCONECTA. CALL 'MQDISC' USING WS-HCONN WS-COMPCODE WS-REASON.

7️⃣ Rollback (se algo der errado)

ROLLBACK. CALL 'MQBACK' USING WS-HCONN WS-COMPCODE WS-REASON. DISPLAY 'ROLLBACK EXECUTADO'. GO TO FECHA-FILA.

🔚 Fim do programa

FIM-PROGRAMA. STOP RUN.

🧠 O que este exemplo ensina (de verdade)

✔ Fluxo correto do MQ
✔ Tratamento de erros
✔ Uso de COMMIT / ROLLBACK
✔ Código legível para mainframer
✔ Pronto para:

  • Batch

  • CICS

  • IMS

  • DB2


📌 Dicas Bellacosa Mainframe

  • Sempre trate:

    • 2033 (no message)

    • 2009 (connection broken)

  • Nunca:

    • Esqueça COMMIT

    • Assuma que mensagem foi consumida

  • Pense em MQ como:

    DB2 sem SQL

     

quinta-feira, 22 de fevereiro de 2018

😈🔥 Lendo SMF do MQ como se fosse trace distribuído

 


😈🔥 Lendo SMF do MQ como se fosse trace distribuído


Conhecimento básico sobre aplicações distribuídas para quem já confiou mais no SMF do que em qualquer dashboard





☕ 02:48 — Quando a fila cresce e ninguém sabe “quem começou”

No mundo cloud, alguém pergunta:

“Qual serviço está causando o problema?”

No mundo mainframe, a pergunta sempre foi melhor:

“Qual transação chegou primeiro?”

Este artigo é sobre ler SMF do IBM MQ for z/OS com a mesma lógica usada para distributed tracing moderno — só que com décadas a mais de maturidade.



1️⃣ Contexto histórico: antes do trace existir, o SMF já contava a história 🧬

Distributed tracing surgiu porque:

  • sistemas ficaram espalhados

  • ninguém sabia por onde o request passava

No z/OS:

  • tudo sempre passou por um lugar auditável

  • o SMF virou a linha do tempo oficial

📌 Comentário Bellacosa:
Trace é novidade.
Linha do tempo sempre foi obrigação.


2️⃣ O que é um trace distribuído, afinal? 🧩

Trace distribuído:

  • segue um request

  • de serviço em serviço

  • até o resultado (ou falha)

SMF do MQ faz o mesmo:

  • PUT

  • fila

  • GET

  • consumo

  • impacto em recursos

🔥 Tradução direta:
Cada mensagem no MQ é um request distribuído encapsulado.


3️⃣ Mapa mental: SMF do MQ ↔ Trace moderno 🗺️

SMF MQ (z/OS)Trace distribuídoSignificado
PUT MESSAGESpan inicialEntrada do request
Queue NameService nameDestino lógico
GET MESSAGESpan consumidorProcessamento
Queue DepthLagAcúmulo de trabalho
Elapsed TimeLatênciaTempo fim a fim
CPU / I/OResource usageCusto do request
AplicaçãoService IDResponsável

😈 Easter egg:
Fila crescendo é trace parado no meio do caminho.


4️⃣ Lendo SMF como linha do tempo (não como relatório) ⏱️

Erro comum:

  • olhar SMF como estatística fria

Leitura correta:

  • montar sequência temporal

  • entender causa → efeito

📌 Comentário Bellacosa:
Trace não é gráfico bonito.
É história cronológica.


5️⃣ Passo a passo: leitura estilo “trace distribuído” 🔍

5.1 — Identifique o PUT inicial

  • Quem publicou?

  • Em que horário?

  • Com qual volume?

👉 Equivalente ao primeiro span do trace.


5.2 — Observe a evolução da fila

  • Crescimento constante?

  • Explosão pontual?

😈 Easter egg:
Fila crescendo devagar é mais perigosa que pico.


5.3 — Analise o GET

  • Está acontecendo?

  • Está atrasado?

  • Está mais lento?

📌 Tradução:
Consumidor virou gargalo.


5.4 — Correlacione com recursos (RMF mode) 📊

  • CPU alta?

  • I/O saturado?

  • Espera?

🔥 Comentário Bellacosa:
Mensagem não some. Ela espera.


5.5 — Ache o primeiro desvio

  • Antes do alerta

  • Antes da reclamação

  • Antes do incidente

👉 Esse é o root cause real.


6️⃣ Curiosidades que só mainframer percebe 😈

  • MQ nunca mente

  • Ele só acumula evidência

  • SMF sempre esteve certo

  • O erro humano vem depois

📌 Comentário ácido:
Alertas gritam. SMF sussurra — e acerta.


7️⃣ Erros clássicos ao analisar MQ ⚠️

❌ Aumentar depth máximo
❌ Ajustar buffers sem análise
❌ Culpar o MQ
❌ Ignorar correlação temporal

🔥 Regra imortal:
Fila cheia é consequência, não diagnóstico.


8️⃣ Guia de estudo prático 📚

Conceitos

  • Mensageria confiável

  • Backpressure

  • Throughput vs Latência

  • Observabilidade

  • Root cause analysis

Exercício Bellacosa

👉 Pegue um relatório SMF do MQ
👉 Monte uma timeline manual
👉 Marque onde o fluxo parou


🎯 Aplicações práticas desse entendimento

  • Integração mainframe-cloud

  • Sistemas event-driven críticos

  • Análise de gargalos

  • Prevenção de incidentes

  • Auditoria e compliance

🔥 Comentário final:
Quem entende SMF do MQ já entende tracing distribuído — só não chamava assim.


🖤 Epílogo — 03:19, filas sob controle

Enquanto o mundo descobre tracing,
o mainframe segue entregando história completa, com provas.

El Jefe Midnight Lunch assina:
“Mensagem não mente. E SMF nunca esquece.”

 

sexta-feira, 19 de janeiro de 2018

💡 Mid-Week Tech Insight | IBM MQ for z/OS & SMF Data



 💡 Mid-Week Tech Insight | IBM MQ for z/OS & SMF Data

Mensageria crítica explicada para quem já confia mais no SMF do que em dashboard bonito




☕ 02:22 — Quando a fila começa a crescer em silêncio

Todo mainframer já viveu esse momento:
o sistema “está no ar”, ninguém reclamou…
mas o depth da fila começa a subir.

No mundo distribuído isso vira pânico tardio.
No z/OS, isso vira SMF bem lido.

Este artigo é sobre IBM MQ for z/OS + SMF como fundação real de aplicações distribuídas críticas — sem hype, sem romantização.


1️⃣ Um pouco de história: quando mensageria virou espinha dorsal 🧬

Antes de “event-driven” virar buzzword:

  • MQ já desacoplava sistemas

  • Garantia entrega

  • Preservava ordem

  • Sobrevivia a falhas

📌 Comentário Bellacosa:
MQ não nasceu para “escala web”.
Nasceu para não perder mensagem.


2️⃣ Por que SMF é a alma do MQ no z/OS 🧠

No z/OS:

  • Nada sério existe sem SMF

  • Performance sem SMF é palpite

No MQ:

  • SMF mostra o que realmente aconteceu

  • Não o que alguém acha que aconteceu

🔥 Tradução direta:
SMF é o trace definitivo do MQ.


3️⃣ O que o SMF revela sobre o MQ (e ninguém vê) 🔍

Com SMF você enxerga:

  • Volume de mensagens

  • Taxa de PUT / GET

  • Uso de CPU e I/O

  • Esperas

  • Gargalos por fila ou aplicação

😈 Easter egg:
Quem analisa SMF sabe que fila cheia não é causa — é sintoma.


4️⃣ MQ no mundo distribuído: o elo invisível 🌍

Aplicações modernas:

  • Microservices

  • Eventos

  • APIs

Mas no core:

  • MQ continua segurando o mundo

📌 Comentário ácido:
Kafka fala alto.
MQ entrega calado.


5️⃣ Passo a passo mental: analisando MQ via SMF 🧭

1️⃣ Observe o crescimento da fila
2️⃣ Correlacione com horário e carga
3️⃣ Analise PUT vs GET
4️⃣ Verifique latência e espera
5️⃣ Avalie consumo de CPU
6️⃣ Identifique aplicação causadora
7️⃣ Só então ajuste parâmetros

🔥 Regra de ouro:
Nunca aumente buffer antes de entender o gargalo.


6️⃣ SMF vs Observabilidade moderna (o encontro dos mundos) 📊

MainframeMundo distribuído
SMF MQTraces de mensageria
RMFMétricas de throughput
Queue DepthLag de consumidor
PUT/GETProducer / Consumer
AbendIncident

😈 Curiosidade:
O que hoje chamam de “lag” você sempre chamou de fila crescendo.


7️⃣ Erros comuns (e caros) ⚠️

❌ Ignorar SMF e confiar só em alertas
❌ Tratar MQ como “infra”
❌ Ajustar parâmetros sem evidência
❌ Não correlacionar com carga real

📌 Comentário Bellacosa:
Mensageria sem visibilidade vira buraco negro.


8️⃣ Guia de estudo prático 📚

Conceitos

  • Mensageria confiável

  • Desacoplamento real

  • Backpressure

  • Observabilidade

  • Capacidade

Exercício

👉 Pegue dados SMF do MQ
👉 Monte uma linha do tempo
👉 Relacione com batch, online e APIs


🎯 Aplicações reais no mundo enterprise

  • Core bancário

  • Integração mainframe-cloud

  • Sistemas regulados

  • Alta disponibilidade

  • Processamento assíncrono crítico

🔥 Comentário final:
Sem MQ, o distribuído cai.
Sem SMF, ninguém sabe por quê.


🖤 Epílogo — 03:05, filas sob controle

Enquanto alguns discutem se mensageria é “moderna”,
o MQ segue processando bilhões de mensagens… com SMF contando a verdade.

El Jefe Midnight Lunch assina:
“Mensagens podem esperar. Diagnóstico não.”

 

domingo, 6 de julho de 2008

☕ IBM MQ – State-of-the-art Resilience

 

Bellacosa Mainframe apresenta o IBM MQ
☕ IBM MQ – State-of-the-art Resilience

Alta disponibilidade não é luxo. É sobrevivência. (e o mainframe sempre soube disso)

Vamos começar pelo óbvio — aquele óbvio que só dói quando falha.
Se o e-commerce cai, você fica irritado.
Se o banco cai, o país inteiro sente.
Se logística, pagamentos ou supply chain param… bem-vindo ao caos operacional, manchetes negativas e reuniões “quentes” com o board.

👉 Resiliência hoje não é diferencial técnico. É requisito de negócio.

E é exatamente aqui que o IBM MQ entra em modo mainframe mindset:

falhar pode até acontecer — parar, não.


🧠 Um pouco de história (porque nada nasce ontem)

Mensageria sempre foi o “sistema nervoso” das arquiteturas corporativas.
No mainframe, isso já era verdade quando REST ainda era só uma palavra em inglês comum.

O IBM MQ (ex-WebSphere MQ, para os old school 😏) nasceu com um princípio simples e poderoso:

mensagem persistente não se perde. ponto.

Enquanto o mundo distribuído moderno corre atrás de eventual consistency, o MQ sempre jogou no modo consistência forte + durabilidade.

E agora, com Native High Availability (NHA) e Cross Region Replication (CRR), ele elevou esse jogo para o nível cloud + geo + compliance.


🧱 Native High Availability (NHA)

Alta disponibilidade… sem gambiarra externa

Vamos direto ao ponto:
NHA é alta disponibilidade nativa, de verdade.

Nada de:

  • storage replicado caríssimo 💸

  • drivers de kernel obscuros

  • cluster manager de terceiros

  • dependência de “caixinhas mágicas”

👉 O próprio IBM MQ resolve.

🔑 Como funciona?

  • 3 nós (leader / followers)

  • Baseado no algoritmo de consenso Raft (sim, o mesmo conceito usado em sistemas distribuídos sérios)

  • Quórum síncrono:

    • mensagem só é confirmada quando escrita em pelo menos 2 nós

    • resultado? RPO = zero (nenhuma mensagem perdida)

📌 Easter egg técnico:

Se você viveu o mundo de DB2 Data Sharing, isso vai soar familiar. O conceito é diferente, mas a filosofia é a mesma: consistência acima de tudo.

⚡ Recuperação em segundos

Falhou um nó?

  • detecção rápida

  • eleição automática

  • retomada quase imediata

Tudo isso:

  • em VM

  • bare metal

  • containers (Kubernetes / OpenShift)

Sem reescrever arquitetura. Sem dor.

🔐 Segurança e operação

  • Comunicação entre nós com TLS

  • Atualizações rolling upgrade

  • Sem downtime relevante

👉 Operacionalmente simples.
👉 Arquiteturalmente elegante.
👉 Auditor-friendly (alô, bancos e regulados 👀).


🌍 Cross Region Replication (CRR)

Quando o problema não é o servidor… é o mapa

Agora vamos falar de desastre de verdade:
região inteira fora do ar.
datacenter indisponível.
zona geográfica comprometida.

É aqui que entra o CRR.


🎯 Objetivo do CRR

Garantir resiliência geográfica com:

  • alta performance

  • baixo impacto de latência

  • custo otimizado

Tudo isso sem replicação de disco tradicional.


📉 O problema das soluções antigas

Replicação baseada em storage:

  • replica log + arquivos de fila

  • duplica tráfego de rede

  • snapshot de 15 minutos (ou pior)

  • custo alto em cloud 🌩️

📌 Tradução Bellacosa:

você paga mais, replica mais dados… e ainda perde mensagens no meio do caminho.


🚀 O diferencial do CRR

O CRR faz algo muito mais inteligente:

  • replica somente o que é necessário

  • usa compressão eficiente

  • protege o primário contra lentidão do remoto (latency protection)

  • permite switchover planejado com RPO zero

👉 Mesmo sendo assíncrono, um planned switchover não perde nenhuma mensagem.

Isso é ouro puro para:

  • DR corporativo

  • auditorias

  • testes reais de contingência

  • ambientes regulados


🔄 Active / Active? Sim, senhor.

O CRR permite:

  • alternar primário ↔ secundário

  • ou até operar queue managers ativos em ambos os sites

📌 Easter egg arquitetural:

aqui o MQ começa a conversar de igual para igual com arquiteturas distribuídas modernas — só que sem abrir mão da confiabilidade “old school”.


🧾 Persistência: o detalhe que muda tudo

Lembrete importante (e muita gente esquece):

📝 IBM MQ sempre grava mensagens persistentes no log transacional.
Se a fila estoura memória ou precisa ir para disco:

  • arquivos de fila garantem durabilidade

  • recuperação consistente após falha

O CRR entende isso profundamente — por isso não replica disco bruto, mas sim o estado lógico necessário para reconstrução perfeita.

Resultado?

  • menos tráfego

  • menos custo

  • mais controle


🧩 NHA + CRR = mentalidade mainframe no mundo cloud

Quando você junta:

  • NHA (resiliência local, RPO zero, failover rápido)

  • CRR (resiliência geográfica, DR real, switchover sem perda)

Você tem algo raro hoje em dia:

resiliência enterprise sem complexidade externa

Sem Frankenstein arquitetural.
Sem depender de “mais uma ferramenta”.
Sem sustos na madrugada.


☕ Comentário final (estilo Bellacosa)

O mercado redescobriu agora o que o mainframe sempre soube:

alta disponibilidade não é só estar no ar — é garantir integridade, consistência e previsibilidade quando tudo dá errado.

O IBM MQ, com NHA e CRR, mostra que:

  • dá pra ser moderno

  • distribuído

  • cloud-ready

  • sem abrir mão da confiabilidade raiz

No fim do dia, não é sobre tecnologia.
É sobre confiança.

E confiança…
👉 não se replica com snapshot de 15 minutos.