IBM MQ: Principais Conceitos do IBM MQ: Difference between revisions
| Line 59: | Line 59: | ||
│ └── TOPICS | │ └── TOPICS | ||
│ ├── MESSAGES | │ ├── MESSAGES | ||
│ | |||
└── EVENT-DRIVEN MESSAGING (Arquitetura orientada a eventos) | |||
│ | |||
├── Usa Point-to-Point (via Queues) | |||
├── Usa Pub/Sub (via Topics) | |||
├── Triggers | |||
├── Event Sourcing | |||
└── Event Streaming | |||
</pre> | |||
<pre> | |||
IBM-MQ/ | |||
│ | |||
├── REDE DE QUEUE MANAGERS | |||
│ │ | |||
│ └── QM1 <--> QM2 <--> QM3 <--> QM4 | |||
</pre> | </pre> | ||
Revision as of 21:29, 19 February 2026
Principais Conceitos do IBM MQ
Messages
As mensagens são unidades de dados que são transmitidas entre aplicações através do IBM MQ. Uma mensagem consiste em:
- Message Descriptor:
- Contém informações de controle e metadados sobre a mensagem, como: Message ID, Correlation ID: (para correlacionar respostas), Priority, Persistence: (se a mensagem deve ser persistida em disco), Expiry time, Format
- Application Data: O conteúdo real da mensagem, que pode ser: Texto simples, XML, JSON, Dados binários, ...
As mensagens no IBM MQ são assíncronas, permitindo que aplicações se comuniquem sem precisar estar ativas simultaneamente.
Queues (Filas)
Queues são objetos que armazenam mensagens até que sejam recuperadas por uma aplicação receptora. Características principais:
- FIFO (First In, First Out): Por padrão, as mensagens são recuperadas na ordem em que foram colocadas
- Persistência: Mensagens podem ser persistentes (sobrevivem a reinicializações) ou não-persistentes
- Tipos de Filas:
- Local Queue: Fila física que armazena mensagens localmente
- Remote Queue: Definição que aponta para uma fila em outro queue manager
- Alias Queue: Nome alternativo para outra fila
- Model Queue: Template para criar filas dinâmicas
- Dynamic Queue: Fila temporária criada sob demanda
- Atributos Importantes:
- Maximum depth (profundidade máxima)
- Maximum message length (tamanho máximo de mensagem)
- Default priority (prioridade padrão)
- Trigger properties (propriedades de disparo)
Queue Manager
O Queue Manager é o componente central do IBM MQ que gerencia filas e fornece serviços de mensageria. Responsabilidades:
- Gerenciamento de Filas: Cria, mantém e controla o acesso às filas
- Roteamento de Mensagens: Direciona mensagens entre filas e aplicações
- Persistência: Garante que mensagens persistentes sejam armazenadas de forma confiável
- Segurança: Controla autenticação e autorização de acesso
- Conectividade: Gerencia conexões com aplicações e outros queue managers
- Transações: Suporta operações transacionais (commit/rollback)
- Logging e Recovery: Mantém logs para recuperação em caso de falhas
IBM-MQ/
│
├── QUEUE MANAGER (Gerencia Queues e Topics)
│ │
│ ├── Point-to-Point Messaging (1 para 1)
│ │ │
│ │ └── QUEUES
│ │ │
│ │ └── MESSAGES
│ │
│ └── Publish/Subscribe (1 para N)
│ │
│ └── TOPICS
│ ├── MESSAGES
│
└── EVENT-DRIVEN MESSAGING (Arquitetura orientada a eventos)
│
├── Usa Point-to-Point (via Queues)
├── Usa Pub/Sub (via Topics)
├── Triggers
├── Event Sourcing
└── Event Streaming
IBM-MQ/ │ ├── REDE DE QUEUE MANAGERS │ │ │ └── QM1 <--> QM2 <--> QM3 <--> QM4
IBM-MQ/ │ ├── REDE DE QUEUE MANAGERS │ │ │ └── QM1 <--> QM2 <--> QM3 <--> QM4
Topics (Tópicos)
Topics são objetos usados no modelo publish/subscribe que representam assuntos ou categorias de informação. Características:
- Estrutura Hierárquica: Organizados em árvore usando "/" como separador
- Exemplo:
/finance/stocks/IBM - Exemplo:
/sports/football/results
- Exemplo:
- Topic String: String que identifica o tópico
- Topic Object: Objeto administrativo que define propriedades do tópico
- Wildcards:
- # (multilevel wildcard): Substitui zero ou mais níveis
- Exemplo:
/finance/#corresponde a todos os tópicos sob finance
- Exemplo:
- + (single level wildcard): Substitui exatamente um nível
- Exemplo:
/sports/+/resultscorresponde a resultados de qualquer esporte
- Exemplo:
- # (multilevel wildcard): Substitui zero ou mais níveis
- Propriedades:
- Persistence (persistência das publicações)
- Priority (prioridade)
- Durability (durabilidade das subscrições)
Channels (Canais)
Channels são mecanismos de comunicação que conectam queue managers ou aplicações ao IBM MQ. Tipos principais:
Message Channels (Canais de Mensagem)
Conectam dois queue managers para transferência de mensagens:
- Sender Channel: Envia mensagens para outro queue manager
- Receiver Channel: Recebe mensagens de outro queue manager
- Server Channel: Responde a requisições de um requester channel
- Requester Channel: Inicia conexão com um server channel
- Cluster Sender/Receiver: Usados em configurações de cluster
MQI Channels (Canais MQI)
Conectam aplicações cliente ao queue manager:
- Server-Connection Channel: Aceita conexões de clientes
- Client-Connection Channel: Usado por aplicações cliente para conectar
Características dos Canais
- Protocolo de Transporte: TCP/IP, LU 6.2, etc.
- Segurança: SSL/TLS, autenticação
- Heartbeat: Monitora conexões ativas
- Retry Logic: Reconexão automática em caso de falha
- Compression: Compressão de dados e headers
- Batching: Agrupa múltiplas mensagens para eficiência
Publish/Subscribe (Pub-Sub)
Publish/Subscribe é um padrão de mensageria onde produtores (publishers) e consumidores (subscribers) são desacoplados através de tópicos.
Componentes
- Publisher (Publicador):
- Publica mensagens em tópicos
- Não precisa conhecer os subscribers
- Pode publicar para múltiplos tópicos
- Subscriber (Assinante):
- Se inscreve em tópicos de interesse
- Recebe mensagens publicadas nesses tópicos
- Pode usar wildcards para múltiplos tópicos
- Subscription (Subscrição):
- Registro do interesse de um subscriber em um tópico
- Pode ser durável (persiste após desconexão) ou não-durável
- Pode ter seletores para filtrar mensagens
Vantagens
- Desacoplamento: Publishers e subscribers não se conhecem
- Escalabilidade: Fácil adicionar novos subscribers
- Flexibilidade: Subscribers podem se inscrever dinamicamente
- Broadcast: Uma mensagem pode ser entregue a múltiplos subscribers
Tipos de Subscrição
- Durable Subscription: Persiste mesmo quando o subscriber está offline
- Non-durable Subscription: Existe apenas enquanto o subscriber está conectado
- Managed Subscription: Criada administrativamente
- API Subscription: Criada programaticamente pela aplicação
Point-to-Point Messaging
Point-to-Point é um padrão de mensageria onde mensagens são enviadas de um produtor para um único consumidor através de filas.
Características
- Fila como Intermediário: Mensagens são colocadas em uma fila
- Um Consumidor por Mensagem: Cada mensagem é processada por apenas um consumidor
- Garantia de Entrega: Mensagem é entregue exatamente uma vez
- Ordem: Mensagens são geralmente processadas em ordem FIFO
- Persistência: Mensagens podem ser armazenadas até serem consumidas
Padrões de Uso
- Request/Reply:
- Aplicação envia requisição em uma fila
- Resposta é enviada em outra fila (reply-to queue)
- Usa Correlation ID para correlacionar resposta
- Work Queue:
- Múltiplos consumidores competem por mensagens
- Load balancing automático
- Cada mensagem processada por um worker
- Message Routing:
- Mensagens roteadas para diferentes filas baseado em conteúdo
- Permite processamento especializado
Vantagens
- Confiabilidade: Garantia de entrega
- Load Balancing: Distribuição de carga entre consumidores
- Decoupling: Produtor e consumidor não precisam estar ativos simultaneamente
- Buffering: Fila absorve picos de carga
Event-Driven Messaging
Event-Driven Messaging é uma arquitetura onde sistemas reagem a eventos através de mensagens assíncronas.
Conceitos Fundamentais
- Event (Evento): Notificação de que algo aconteceu no sistema
- Mudança de estado
- Ação do usuário
- Condição do sistema
- Transação completada
- Event Producer: Gera e publica eventos
- Event Consumer: Reage a eventos de interesse
- Event Channel: Meio de transmissão (fila ou tópico)
Características
- Asynchronous: Produtor não espera resposta imediata
- Loosely Coupled: Componentes independentes
- Scalable: Fácil adicionar novos consumidores de eventos
- Real-time: Processamento imediato de eventos
Padrões de Implementação no IBM MQ
Event Notification
- Usa Pub/Sub para broadcast de eventos
- Múltiplos sistemas podem reagir ao mesmo evento
- Exemplo: Notificação de nova ordem para estoque, faturamento, envio
Event Sourcing
- Eventos são armazenados como log imutável
- Estado atual derivado da sequência de eventos
- Permite replay e auditoria completa
Triggers
- Queue triggers disparam aplicações quando mensagens chegam
- Automação de processamento
- Tipos:
- FIRST: Dispara quando primeira mensagem chega em fila vazia
- EVERY: Dispara para cada mensagem
- DEPTH: Dispara quando profundidade atinge threshold
Event Streaming
- Fluxo contínuo de eventos
- Processamento em tempo real
- Integração com sistemas de streaming
Vantagens
- Responsiveness: Sistema reage imediatamente a mudanças
- Flexibility: Fácil adicionar novos comportamentos
- Auditability: Histórico completo de eventos
- Resilience: Falhas isoladas não afetam todo o sistema
- Scalability: Componentes escalam independentemente
Casos de Uso
- Microservices: Comunicação entre serviços
- IoT: Processamento de dados de sensores
- Real-time Analytics: Análise de eventos em tempo real
- Workflow Automation: Orquestração de processos
- System Integration: Integração de sistemas heterogêneos
Relação entre os Conceitos
| MQ | |
|---|---|
| Message | |
| Queue (point-to-point) | mailbox |
| Producer | Outlook, SMTP Client |
| Consumer | POP3, IMAP |
| Queue Manager | Postfix, Sendmail, MTA |
| Topic (Publish-Subscriber) | Mailing list |
| Message ACK | Return Receipt |
| TTL | Expires Header |
- Point-to-Point usa Queues para entregar Messages a um único consumidor
- Pub/Sub usa Topics para distribuir Messages a múltiplos subscribers
- Queue Manager gerencia tanto Queues quanto Topics
- Channels conectam Queue Managers para formar redes de mensageria
- Event-Driven Messaging pode usar tanto Point-to-Point quanto Pub/Sub
- Todos os padrões dependem de Messages como unidade fundamental de comunicação
Referências
- IBM MQ Documentation: https://www.ibm.com/docs/en/ibm-mq
- IBM MQ Knowledge Center
- IBM Redbooks sobre IBM MQ