O que é fila de mensagens?

Mensagem, qualquer mensagem enviada da origem ao destino. Os programas se comunicam enviando dados uns aos outros em mensagens, em vez de ligarem uns aos outros diretamente. Por exemplo, enviar mensagem em vez de ligar para uma pessoa em sua casa.

Fila, um processo de espera para limpar a solicitação anterior e prosseguir. As mensagens são colocadas em filas, para que os programas possam rodar independentemente uns dos outros, em velocidades e horários diferentes, em locais diferentes e sem haver conexão direta entre eles.

O que é o IBM MQ?

O IBM MQ pode transportar qualquer tipo de dados como mensagens, permitindo que as empresas construam arquiteturas flexíveis e reutilizáveis, como ambientes de arquitetura orientada a serviços (SOA). Ele funciona com uma ampla gama de plataformas de computação, aplicativos, serviços web e protocolos de comunicação para entrega de mensagens com alto nível de segurança. O IBM MQ fornece uma camada de comunicações para visibilidade e controle do fluxo de mensagens e dados dentro e fora de sua organização.

IBM MQ é um middleware de mensagens e enfileiramento, com diversos modos de operação: ponto a ponto (será usado para unicast); publicar/assinar (os aplicativos podem publicar mensagens para muitos assinantes por multicast), transferência de arquivos.

Quais domínios esses serviços MQ são usados?

  • Bancário,
  • Varejos,
  • Seguro,
  • Assistência médica,
  • e outros

Vantagens do MQ?

  • Integração versátil de mensagens do mainframe para dispositivos móveis que fornece um backbone de mensagens único e robusto para ambientes dinâmicos e heterogêneos.
  • Entrega de mensagens com recursos ricos em segurança que produzem resultados auditáveis.
  • Qualidades de serviço que fornecem entrega única de mensagens para garantir que as mensagens resistirão a interrupções de aplicativos e sistemas.
  • Transporte de mensagens de alto desempenho para entregar dados com maior velocidade e confiabilidade.
  • Arquiteturas altamente disponíveis e escaláveis para dar suporte às necessidades de uma aplicação.
  • Recursos administrativos que simplificam o gerenciamento de mensagens e reduzem o tempo gasto no uso de ferramentas complexas.
  • Ferramentas de desenvolvimento de padrões abertos que apoiam a extensibilidade e o crescimento dos negócios.
  • Método de comunicação sincronizado e assíncrono
  • Independente do sistema operacional
  • Arquitetura fracamente acoplada

Concorrente do MQ?

  • Apache Kafka
  • Rabbit MQ
  • JMS
  • Oracle Fusion

Tipos de conteúdo da mensagem?

  • Binário
  • Texto, Texto bruto, XML.
  • Dados estruturados, C, Cobol ou objeto Java serializado.
  • Swift Messages.
  • e outros.

Versão mais recente do MQ?

  • 9.1

Tipos de mensagens?

  • DATAGRAM - Uma mensagem enviada sem resposta é esperada.
  • REQUEST - Uma mensagem é enviada com respostas esperadas.
  • REPLY - Uma mensagem de resposta para uma mensagem solicitada.
  • REPORT - Uma mensagem que descreve as ocorrências ou evento.

Modo múltiplo de operações?

Point-to-point ( Queues )

As aplicações enviam mensagens para uma fila e recebem mensagens de uma fila. Cada mensagem é consumida por uma única instância de um aplicação. O sender deve saber o nome do destino, mas não onde ele está.

Publish/subscribe ( Topics )

As aplicações assinam tópicos. Quando um aplicação publica uma mensagem em um tópico, o IBM MQ envia cópias da mensagem para as aplicações assinantes. O publisher não sabe os nomes dos subscribers ou onde eles estão

Queues (Filas):

Sender JMS/MQ Server Receiver
  • O Sender enviará mensagens e elas serão armazenadas no servidor JMS/MQ e serão entregues ao destinatário.
  • Por se tratar de um sistema de filas, as mensagens ficariam na fila e sairiam para entrega.
  • Por se tratar de um sistema de filas, um remetente pode enviar uma mensagem por vez para um destinatário.
  • O remetente conhece o destinatário.
  • Não há limite de tempo para as mensagens serem entregues

Sistema de tópicos:

Publisher JMS/MQ Server Subscriber
  • Este é um sistema de tópicos, onde o editor publicaria seu conteúdo no servidor JMS e qualquer pessoa poderia assiná-lo.
  • A mensagem iria aleatoriamente para o servidor JMS e qualquer número de pessoas poderia assiná-la.
  • Disponível por um limite de tempo específico.
  • Esta não é uma mensagem intencional, portanto o publisher não terá a menor ideia sobre o subscriber.

Os principais recursos dos aplicativos que utilizam técnicas de enfileiramento de mensagens são:

  • Não existem conexões diretas entre programas.
  • A comunicação entre programas pode ser independente do tempo.
  • O trabalho pode ser realizado por programas pequenos e independentes.
  • A comunicação pode ser impulsionada por eventos.
  • Os aplicativos podem atribuir uma prioridade a uma mensagem.
  • Segurança.
  • Integridade de dados.
  • Suporte à recuperação.

Objetos e Serviços:

  • QUEUE - é uma estrutura de banco de dados que armazena mensagens até que a aplicação ou programa as receba.
  • CHANNELS - Canais são objetos que fornecem um caminho de comunicação de um gerenciador de filas para outro. Os canais são usados para mover mensagens de um gerenciador de filas para outro e protegem os aplicativos dos protocolos de comunicação subjacentes.
  • PROCESS Definition – O objeto de definição de processo define uma aplicação que inicia em resposta a um evento acionador em um gerenciador de filas do IBM® MQ. Os atributos de definição de processo incluem o ID da aplicação, o tipo de aplicação e os dados específicos da aplicação.
  • QUEUE MANAGER - Objetos e serviços são definidos aqui.

Tipos de filas:

  • Local Queue - Filas de transmissão, iniciação, mensagens mortas, comando, padrão, canal e eventos são tipos de fila local.
  • Alias Queue – Uma fila de alias é um objeto do IBM® MQ que pode ser usado para acessar outra fila ou um tópico. Isso significa que mais de um programa pode trabalhar com a mesma fila, acessando-a por nomes diferentes.
  • Dynamic & Model Queue – uma fila modelo é um modelo de definição de fila que você usa ao criar uma fila dinâmica.
  • Remote Queue - Para um programa, uma fila será remota se pertencer a um gerenciador de filas diferente daquele ao qual o programa está conectado.
  • Repository Queue – Usado no cluster. Um repositório é uma coleção de informações sobre os gerenciadores de filas que são membros de um cluster. Normalmente, dois gerenciadores de filas em um cluster mantêm um repositório completo. Todos os gerenciadores de filas restantes mantêm um repositório parcial

Como funciona?

  • Aqui está uma breve visão geral de como o IBM MQ funciona. Primeiro, uma aplicação de mensagens deve conectar-se a um gerenciador de filas. Isso pode exigir a criação de um canal no gerenciador de filas para aceitar conexões de aplicações. Quando sua aplicação desejar transferir dados para outra aplicação, ele cria uma mensagem e coloca os dados nela. Ele coloca a mensagem em uma fila ou publica a mensagem em um tópico para ser entregue aos assinantes do tópico.
  • A fila ou assinaturas podem estar no mesmo gerenciador de filas ou em outros gerenciadores de filas conectados. Neste último caso, os gerenciadores de filas conectados trabalharão juntos para transferir de forma confiável a mensagem do gerenciador de filas do produtor para os gerenciadores de filas de destino. Os aplicativos não se comunicam entre si, mas sim os gerenciadores de filas.
  • As mensagens podem ser tratadas com base em diversas qualidades de serviço diferentes, onde confiabilidade e persistência são trocadas por velocidade. A mais alta qualidade de serviço dada às mensagens são mensagens persistentes que são enviadas e recebidas sob o controle de transações. Isso garantirá que as mensagens sejam entregues uma única vez, mesmo em caso de falhas no sistema, na rede ou no aplicativo.
  • Os canais do IBM MQ são usados para conectar um gerenciador de filas a outro por meio de uma rede. Você mesmo pode criar canais do MQ ou um gerenciador de filas pode ingressar em um cluster de gerenciadores de filas onde os canais do MQ são criados automaticamente quando são necessários.
  • z/OS]No z/OS, é possível configurar diversos gerenciadores de filas para compartilhar filas no recurso de acoplamento. Os aplicativos conectados a diferentes gerenciadores de filas podem obter e colocar mensagens nas mesmas filas e a partir delas.
  • É possível ter muitas filas e tópicos em um gerenciador de filas.
  • Você pode ter mais de um gerenciador de filas em um computador.
  • Uma aplicação pode ser executado no mesmo computador que o gerenciador de filas ou em um computador diferente. Se for executado no mesmo computador, será uma aplicação do servidor IBM MQ. Se for executado em um computador diferente, será uma aplicação cliente IBM MQ. Se for cliente ou servidor IBM MQ, quase não faz diferença para o aplicativo. É possível construir um aplicativo cliente/servidor com clientes ou servidores IBM MQ.

Comandos Básicos

Série de comandos:

  • Run - Para executar determinados objetos e serviços
  • Dsp - PARA exibir certos objetos e serviços
  • Dlt - Para excluir certos objetos e serviços
  • Crt - Para criar certos objetos e serviços
  • Str - Para iniciar certos objetos e serviços
  • End - Para parar certos objetos e serviços
  • Add - Para adicionar certos objetos e serviços
  • Set - Para definir variáveis para determinados objetos e serviços
  • MQExplorer - para controle e configuração de GUI.
  • runmqsc - para controle e configuração CLI.

Comandos de controle:

CD /opt/mqm/bin/

  • ./dspmq - para exibir nomes de gerenciadores de filas
  • ./dspmqver - para exibir a versão do MQ
  • ./crtmqm qm1 - para criar um gerenciador de filas mq
  • ./delmqm qm1 - para excluir um gerenciador de filas mq
  • ./strmqm qm1 - para iniciar um gerenciador de filas mq
  • ./endmqm qm1 - para parar um gerenciador de filas mq
  • ./runmqsc qm1 - para entrar na interface de linha de comando mq
MQSC:
First SECOND ( Value ) [ options ]
MQ SC Commands:


These are commands typed inside the mqsc for that queue manager.
Cd /opt/mqm/bin/
./runmqsc qm1
define qlocal('q1') - to create a queue

display qmgr -> to display all the settings

DEFINE LISTENER(SYSTEM.DEFAULT.LISTENER.TCP) TRPTYPE (TCP) Port(1414) ipaddr() - this is to add a listener and to add the ip 
address and port number to the listener on the current queue manager.

disp LISTENER(QMGR) - This is to display only the listener in the current queue manager.


Start listener(QMGR) - this will start the listener.
##Now do a telnet from the remote server to see if they are connecting perfectly.
##Now we need to create a channel for communication.
Define channel(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) DESCR('WMQ Default Channel') REPLACE
end - to exi

Para problemas de autenticação:

Cd /opt/mqm/bin/
./runmqsc qm1
display qmgr
alter QMGR CHLAUTH(DISABLED) - This will disable the authentication
display qmgr
end
./setmqaut -m qm1 -t qmgr -g mqm +all - Full permission for MQM group.
sudo usermod -a -G mqm root - We are adding mqm to the root group.

Reboot the system.

Introdução às filas

Tipo de fila Descrição
Local queue Uma fila local é uma definição de uma fila e do conjunto de mensagens associadas à fila. O gerenciador de filas que hospeda a fila recebe mensagens em suas filas locais.
Transmission queue As filas de transmissão são um tipo especial de fila local. Quando o gerenciador de filas envia uma mensagem para uma fila em um gerenciador de filas remotas, a fila de transmissão armazena a mensagem localmente até que a fila no gerenciador de filas remotas esteja disponível. Para criar uma fila de transmissão, crie uma fila local e altere seu atributo Usage para Transmission.
Remote queue definition As definições de fila remota são definições no gerenciador de filas locais de filas que pertencem a outro gerenciador de filas. Para enviar uma mensagem para uma fila em um gerenciador de filas remotas, o gerenciador de filas emissor deve ter uma definição remota da fila de destino
Alias queue As Alias queue não são realmente filas; são definições adicionais de filas existentes. Você cria definições de alias queue que se referem a filas locais reais, mas pode nomear a definição de fila de alias de maneira diferente da fila local (a fila base). Isso significa que é possível alterar as filas usadas por um aplicativo sem precisar alterar o aplicativo; você acabou de criar uma definição de fila de alias que aponta para a nova fila local
Model queue Uma fila modelo é um modelo para filas que você deseja que o gerenciador de filas crie dinamicamente conforme necessário. Quando um aplicativo tenta colocar uma mensagem em uma fila modelo, o gerenciador de filas cria dinamicamente uma fila local com o mesmo nome da fila modelo. As filas criadas dessa forma podem ser temporárias ou permanentes.
Cluster queue Uma fila de cluster é uma fila que foi compartilhada em um cluster para que todos os gerenciadores de filas no cluster possam colocar e obter da fila usando canais de cluster.