Translate

Mostrar mensagens com a etiqueta CICS MQ Bridge. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta CICS MQ Bridge. Mostrar todas as mensagens

terça-feira, 20 de novembro de 2018

CICS MQ Bridge : Quando um Programador Descobre que um MQPUT Pode Executar um Programa COBOL sem Abrir um Único Terminal 3270...

 

Bellacosa Mainframe apresenta cics mq bridge

☕ Um Café no Bellacosa Mainframe

CICS MQ Bridge sem Mistérios para Programadores COBOL

Quando um Programador Descobre que um MQPUT Pode Executar um Programa COBOL sem Abrir um Único Terminal 3270... e Percebe que Existe um Tradutor Universal Trabalhando nos Bastidores do Mainframe

"No universo, existem três tipos de pessoas: as que acham que o MQ conversa diretamente com o COBOL, as que sabem que existe um CICS no meio do caminho... e aquelas que descobriram o MQ Bridge e nunca mais olharam uma fila da mesma forma."


Introdução — O Dia em que o COBOL Conheceu a Nuvem

Imagine que você é um programador COBOL iniciante.

Você acabou de aprender:

  • JCL

  • VSAM

  • CICS

  • COMMAREA

  • EXEC CICS LINK

  • RETURN

  • SEND MAP

  • RECEIVE MAP

Tudo faz sentido.

O usuário abre um terminal 3270.

Digita dados.

O CICS recebe.

Seu programa COBOL executa.

Retorna outra tela.

Fim.

Então alguém aparece na reunião e diz:

"Precisamos que esse programa seja chamado por um microsserviço rodando Kubernetes."

Você responde:

"Mas... onde fica o terminal?"

Silêncio.

Ninguém responde.

Porque...

não existe terminal.

É aqui que começa uma das arquiteturas mais inteligentes já criadas dentro do ecossistema IBM Z:

CICS MQ Bridge.

Hoje vamos fazer uma viagem ao estilo Guia do Mochileiro das Galáxias, descobrindo como um simples MQPUT consegue acordar um programa COBOL escrito há trinta anos sem modificar praticamente uma linha de código.

Pegue seu café.

Ajuste seu terminal 3270.

E não esqueça sua toalha.


Capítulo 1 — Antes do MQ Bridge Existia Apenas o Terminal

Durante décadas o fluxo era extremamente simples.

Usuário

↓

Terminal 3270

↓

CICS

↓

Programa COBOL

↓

Banco de Dados

O terminal era praticamente parte do programa.

Quando alguém digitava ENTER...

o CICS criava uma Task.

Montava o ambiente.

Criava o EIB.

Criava a COMMAREA.

Chamava a Transaction.

O COBOL trabalhava.

Era um mundo perfeito.

Até aparecerem...

  • Java

  • Linux

  • Windows

  • Web Services

  • REST

  • Smartphones

  • APIs

  • Kubernetes

  • OpenShift

  • Microsserviços

Todos eles queriam conversar com o COBOL.

Nenhum deles sabia falar 3270.


O Grande Problema

Imagine tentar conversar com um japonês usando apenas latim medieval.

Não importa o quanto ambos sejam inteligentes.

Sem tradutor...

não existe comunicação.

O mesmo acontecia aqui.

Java
        X
COBOL CICS

Java entende objetos.

REST entende JSON.

MQ entende mensagens.

O COBOL espera uma COMMAREA.

Quem faz essa tradução?

O MQ Bridge.


O MQ Não Executa Programas

Esse é um dos maiores equívocos dos iniciantes.

Muita gente imagina:

MQ

↓

Programa COBOL

Isso nunca acontece.

O MQ apenas transporta mensagens.

Ele não conhece:

  • EXEC CICS

  • COMMAREA

  • EIB

  • TCTUA

  • TIOA

  • MAPSET

  • BMS

Ele é apenas um excelente carteiro.

O inteligente da história é o CICS.


Pense no MQ Como os Correios

Você escreve uma carta.

Os Correios não sabem o conteúdo.

Eles apenas entregam.

Da mesma forma:

Aplicação

↓

MQPUT

↓

Fila

↓

MQGET

O MQ não interpreta.

Não executa.

Não calcula.

Não valida.

Ele apenas entrega.

Essa simplicidade é justamente sua maior força.


O Surgimento do Bridge

Alguém na IBM fez uma pergunta brilhante.

"E se criarmos um intérprete?"

Um componente capaz de dizer:

"Recebi uma mensagem MQ.
Vou fingir que ela veio de um terminal."

Nascia o Bridge Facility.


A Arquitetura Completa

Vamos ampliar o diagrama.

Cliente

↓

MQPUT

↓

Request Queue

↓

Trigger

↓

CKTI

↓

ATTACH

↓

CKBR

↓

Bridge Facility

↓

EXEC CICS

↓

Programa COBOL

↓

COMMAREA

↓

MQPUT

↓

Reply Queue

↓

Cliente

Parece longo.

Mas acontece em poucos milissegundos.


Capítulo 2 — O Primeiro Passo: MQPUT

Tudo começa com um simples comando.

MQPUT

Esse comando grava uma mensagem.

Mas a mensagem não contém apenas dados.

Ela possui uma identidade.

É como um envelope.

Dentro dele existem várias informações.


O Envelope Inteligente

Imagine enviar uma encomenda.

No envelope existe:

Destinatário

Remetente

Prioridade

Resposta

Conteúdo

No MQ ocorre exatamente o mesmo.

Quem guarda essas informações?

MQMD.


MQMD — O RG da Mensagem

MQMD significa:

Message Descriptor

Ele possui dezenas de campos.

Entre eles:

Message ID

Correlation ID

Persistence

Priority

Expiry

ReplyToQ

ReplyToQMgr

O campo mais importante para o Bridge costuma ser:

ReplyToQ

É ele que informa:

"Quando terminar o processamento,
responda nesta fila."

Nenhuma aplicação precisa conhecer outra.

Tudo acontece por mensagens.


Easter Egg nº 1 ☕

ReplyToQ funciona exatamente como a etiqueta de uma mala no aeroporto.

Você não precisa conhecer quem vai buscá-la.

Basta colocar a etiqueta correta.

Ela chegará ao destino.


MQCIH — O DNA da Chamada CICS

Agora entra o verdadeiro protagonista.

O MQCIH.

Seu nome completo:

MQ CICS Information Header

Esse cabeçalho diz ao Bridge:

  • qual transação executar;

  • se haverá sincronização (syncpoint);

  • qual formato de dados será usado;

  • como tratar erros;

  • como montar o ambiente CICS;

  • quais parâmetros deverão ser passados.

Sem o MQCIH...

o Bridge seria como um carteiro tentando entregar uma carta sem endereço.


O Payload

Depois do MQCIH vem a carga útil.

Ela pode conter:

COMMAREA

3270 Data Stream

Containers

Business Data

É exatamente isso que o programa COBOL irá processar.


Capítulo 3 — O Trigger

Agora imagine um carteiro esperando cartas.

Existem duas formas.

Modelo Antigo

Tem carta?

Não.

Tem carta?

Não.

Tem carta?

Não.

Isso se chama Polling.

CPU desperdiçada.


Modelo Inteligente

Chegou carta.

Toc!

Levante.

Existe trabalho.

Isso é Trigger.

Muito mais elegante.


TRIGGER=YES

Na definição da fila existe um atributo.

TRIGGER=YES

Quando uma mensagem chega...

o Queue Manager cria automaticamente outra mensagem.

Mas atenção.

Essa nova mensagem não contém os dados.

Ela apenas diz:

Existe trabalho.

CKTI — O Porteiro do CICS

CKTI significa:

CICS Trigger Monitor

Ele permanece praticamente dormindo.

Quando chega um Trigger...

acorda.

É como um porteiro de prédio.

Não abre todos os apartamentos.

Ele apenas avisa:

"Existe um visitante."


EXEC CICS ATTACH

O CKTI então executa:

EXEC CICS ATTACH

Esse comando cria uma nova Task CICS.

É semelhante a contratar um funcionário temporário para executar apenas aquele serviço.


Capítulo 4 — CKBR

Agora entra o cérebro da operação.

CKBR.

Se o MQ fosse um correio...

o CKBR seria o tradutor oficial da ONU.

Ele entende:

  • MQ

  • CICS

  • COMMAREA

  • Terminal

  • Programas

  • Transações

Sua missão é unir dois mundos completamente diferentes.


O Grande Truque

O programa COBOL acredita que existe um terminal.

Mas...

não existe.

O Bridge cria um terminal virtual.

É praticamente uma Matrix.

Programa COBOL

↓

"Estou falando com um terminal."

Resposta:

"Claro..."

(na verdade é o Bridge)

Easter Egg nº 2 ☕

Assim como Neo não sabia que vivia na Matrix...

o programa COBOL normalmente não sabe que está sendo chamado por uma aplicação Java.

Ele continua vivendo feliz dentro do CICS.


Bridge Facility

Esse componente cria praticamente todo o ambiente necessário.

Ele pode preparar:

  • EIB

  • COMMAREA

  • Ambiente EXEC CICS

  • Contexto da Task

  • Sessão simulada

  • Recursos temporários

Tudo isso acontece antes do programa iniciar.


Capítulo 5 — A Invocação

Depois de interpretar o MQCIH...

o Bridge finalmente executa a transação.

EXEC CICS LINK

ou

START

ou

ATTACH

Dependendo da configuração.

O programa COBOL recebe exatamente a mesma COMMAREA de sempre.


O COBOL Continua Igual

Veja como isso é poderoso.

Seu código pode continuar assim:

LINKAGE SECTION.

01 DFHCOMMAREA.

   05 CONTA.
   05 VALOR.

PROCEDURE DIVISION.

MOVE ...

EXEC CICS RETURN.

Nenhuma linha foi alterada.

Décadas de investimento permanecem válidas.


Easter Egg nº 3 ☕

É como trocar o motor de um avião em pleno voo sem que os passageiros percebam.

Os passageiros são o programa COBOL.

Quem trocou o motor foi o MQ Bridge.


Capítulo 6 — A Resposta

Quando o programa termina...

o Bridge captura:

COMMAREA

ou

3270 Buffer

ou

Containers

Depois monta outra mensagem MQ.

Acrescenta um novo MQCIH.

Atualiza o MQMD.

E executa:

MQPUT

Agora na Reply Queue.


O Cliente Executa MQGET

Finalmente.

O cliente recebe:

MQGET

E obtém:

  • saldo;

  • mensagens;

  • códigos;

  • erros;

  • dados processados.

O ciclo termina.


Fluxo Completo

MQ Client

↓

MQPUT

↓

Request Queue

↓

Trigger

↓

CKTI

↓

ATTACH

↓

CKBR

↓

Bridge Facility

↓

Programa COBOL

↓

COMMAREA

↓

MQPUT

↓

Reply Queue

↓

MQGET

Esse fluxo acontece milhares de vezes por segundo em grandes bancos.


Por Que Essa Arquitetura É Tão Boa?

Porque ela resolve diversos problemas ao mesmo tempo.

Desacoplamento

O cliente não conhece o COBOL.

O COBOL não conhece o cliente.


Persistência

Mesmo que o CICS pare.

A mensagem continua na fila.

Nada é perdido.


Escalabilidade

Podemos criar várias regiões CICS consumindo a mesma fila.


Balanceamento

O MQ distribui naturalmente o trabalho.


Confiabilidade

IBM MQ é famoso justamente por garantir entrega confiável.

Não é coincidência que seja amplamente utilizado em bancos e bolsas de valores.


Dicas Para Quem Está Aprendendo

✔ Aprenda primeiro CICS tradicional.

✔ Entenda bem COMMAREA.

✔ Estude MQMD.

✔ Depois aprenda MQCIH.

✔ Só então mergulhe no Bridge.

A sequência faz toda diferença.


Erros Comuns

❌ Pensar que MQ executa COBOL.

❌ Esquecer ReplyToQ.

❌ Ignorar CorrelationId.

❌ Confundir Trigger Message com Business Message.

❌ Achar que CKTI processa aplicações.

Na realidade:

CKTI apenas inicia o CKBR.

Quem faz o trabalho pesado é o Bridge.


Curiosidades

  • O MQ Bridge foi criado para reaproveitar aplicações CICS sem exigir reescrita do código.

  • Muitas aplicações modernas em Java, .NET e APIs REST acessam programas COBOL indiretamente por meio dessa arquitetura.

  • O uso do MQCIH permite controlar detalhes da execução da transação sem alterar o programa de negócio.

  • Em muitos ambientes corporativos, uma única fila pode alimentar diversas regiões CICS, aumentando disponibilidade e capacidade de processamento.

  • O conceito de terminal virtual permite que aplicações originalmente escritas para 3270 continuem funcionando mesmo quando chamadas por serviços modernos.


Bellacosa Insight ☕

Existe uma frase famosa na engenharia de software:

"Os bons sistemas sobrevivem porque escondem sua complexidade."

O MQ Bridge é um exemplo quase perfeito dessa ideia.

Para quem está do lado de fora, parece que um simples MQPUT chama um programa COBOL.

Mas, nos bastidores, existe uma verdadeira orquestra trabalhando em perfeita sincronia:

  • o MQ transporta a mensagem;

  • o Trigger detecta trabalho novo;

  • o CKTI desperta a infraestrutura CICS;

  • o CKBR interpreta o cabeçalho MQCIH;

  • a Bridge Facility cria um terminal virtual e prepara o ambiente;

  • o CICS executa a transação;

  • o COBOL processa a lógica de negócio;

  • o MQ devolve a resposta para a fila indicada.

É como observar apenas um botão "Comprar" em um site de comércio eletrônico, sem perceber que, por trás dele, existem dezenas de sistemas coordenando estoque, pagamento, logística e faturamento.

No universo do IBM Z, o CICS MQ Bridge cumpre exatamente esse papel: ele transforma tecnologias modernas em uma linguagem que aplicações COBOL escritas há décadas conseguem entender, preservando um dos maiores patrimônios da computação corporativa. Como diria o Guia do Mochileiro das Galáxias: não entre em pânico. Mesmo que a arquitetura pareça complexa à primeira vista, ela é composta por pequenos componentes especializados, cada um fazendo muito bem uma única tarefa. Quando você entende o papel de cada um, o diagrama deixa de ser um emaranhado de caixas e setas e passa a contar uma história fascinante sobre integração, compatibilidade e a incrível longevidade do ecossistema IBM Z.