Participe da Maratona Behind the Code! A competição de programação que mais te desafia! Inscreva-se aqui

Obtenha uma fila do IBM MQ para desenvolvimento em um contêiner

Para ver como o IBM MQ funciona, você será guiado por meio da criação e configuração de um gerenciador de filas (servidor). Em seguida, você conectará um aplicativo (cliente) a ele. Após concluir o tutorial, você estará apto a enviar mensagens para uma fila e a recuperar mensagens dela.

É possível fazer o download, instalar e executar o gerenciador de filas (servidor) do IBM MQ de várias maneiras:

  • Em um contêiner (este tutorial).
  • Na IBM Cloud.
  • Em vários sistemas operacionais: Linux/Ubuntu ou Windows. Para MacOS, use o MQ em Contêineres.

Objetivos do aprendizado

Após concluir este tutorial, você compreenderá esses conceitos:

  • Gerenciadores de fila do IBM MQ
  • Filas do IBM MQ
  • Sistema de mensagens ponto a ponto

Pré-requisitos

  • Docker Community Edition, versão 17.06 ou mais recente
  • A imagem do Docker do IBM MQ a partir do Docker Hub

Tempo estimado

Este tutorial deve levar cerca de 30 minutos.

Etapas

  1. Instale o Docker
  2. Obtenha o MQ na imagem do Docker
  3. Execute o contêiner a partir da imagem
  4. Insira e obtenha uma mensagem

Etapa 1. Instale o Docker

Se você já instalou o Docker em seu sistema, verifique qual versão está instalada. Se sua versão do Docker é chamada de docker ou docker-engine, será preciso desinstalá-la antes de instalar a versão docker-ce mais recente.

  1. Faça o download do Docker Community Edition, versão 17.06 ou mais recente, no Docker Hub.

  2. Siga as instruções na documentação de instalação para instalar o Docker.

Etapa 2. Obtenha a imagem do MQ no Docker

Os contêineres são executados a partir de imagens e as imagens são criadas a partir de uma especificação listada em um Dockerfile. Nós usaremos uma imagem pré-criada do Servidor do IBM MQ a partir do Docker Hub para que possamos apenas executar nosso contêiner sem precisar criar uma imagem. Nós finalizaremos com uma instalação funcional do MQ e um gerenciador de filas pré-configurado com objetos prontos para os desenvolvedores trabalharem.

  1. Extraia a imagem do hub do Docker que contém a versão mais recente do servidor MQ:

     docker pull ibmcom/mq:latest
    
  2. Quando concluir, verifique quais imagens você possui:

     docker images
    

    Deverá aparecer uma saída como esta:

Saída dos comandos do Docker que mostra a versão mais recente do servidor MQ

Etapa 3. Execute o contêiner a partir da imagem

Agora que a imagem do servidor MQ está em seu repositório local do Docker, é possível executar o contêiner para ativar o MQ no RHEL em um contêiner.

Quando você ativa um contêiner, um sistema de arquivos na memória é usado e ele é excluído quando o contêiner é excluídoO gerenciador e os dados da fila são salvos neste sistema de arquivos. Para evitar perder o gerenciador e os dados da fila, nós podemos usar os volumes do Docker.

Os volumes são anexados aos contêineres quando eles são executados e persistem após o contêiner ser excluído. Quando você executa um novo contêiner, é possível anexar um volume existente e, posteriormente, reutilizar seu gerenciador e os dados da fila.

  1. Use o Docker para criar um volume:

     docker volume create qm1data
    
  2. Execute o contêiner do servidor MQ. Edite o comando para configurar sua própria senha para conectar aplicativos. Essa senha será necessária mais tarde, para o aplicativo do cliente de demonstração e quando você executar seus próprios aplicativos clientes. Neste exemplo, você está configurando a senha como “passw0rd”, mas também é possível escolher sua própria:

     docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --volume qm1data:/mnt/mqm --publish 1414:1414 --publish 9443:9443 --detach --env MQ_APP_PASSWORD=passw0rd ibmcom/mq:latest
    

Seu gerenciador de filas foi configurado com alguma configuração padrão simples para ajudá-lo a conectar seu primeiro aplicativo cliente.

Nós incluímos parâmetros no comando docker run, por exemplo, para aceitar a licença para o IBM MQ Advanced para desenvolvedores, e nomeamos o gerenciador de filas “QM1” , no qual nossa fila existirá.

Como o MQ está em execução dentro de um contêiner, ele ficaria isolado do restante do mundo, então abrimos duas portas que o MQ usa.

O listener do gerenciador de filas atende na porta 1414 para conexões recebidas e a porta 9443 é usada pelo MQ Console.

O aplicativo cliente de demonstração do MQ usará a porta do listener e o painel do MQ Console pode ser visto em seu navegador na porta 9443.

Aguarde um momento para o contêiner iniciar e, em seguida, verifique se ele está em execução:

docker ps

Deverá aparecer uma saída como esta:

Saída da execução da imagem de contêiner

Parabéns! Você acabou de criar seu primeiro gerenciador de filas simples. Ele é chamado de QM1 e está em execução dentro do contêiner.

Para acessar este gerenciador de filas, você conectará por meio do TCP/IP. Esse é o motivo pelo qual você precisou expor a porta 1414.

Anote seu próprio ID do contêiner e use-o para obter acesso à linha de comandos dentro do contêiner. Por exemplo:

docker exec -ti <your container id> /bin/bash

Deverá aparecer uma saída como esta:

Saída para obter acesso à CLI no contêiner

É possível exibir a instalação do MQ e os caminhos de dados executando o comando dspmqver (exibir versão do MQ) em sua interface da linha de comandoss.

dspmqver

Deverá aparecer uma saída como esta: Saída para exibir a versão do MQ

É possível exibir seus gerenciadores de filas em execução usando o comando dspmq.

dspmq

Deverá aparecer uma saída como esta:

Saída para exibir os gerenciadores de filas em execução

Para sair do contêiner do Docker e retornar para sua linha de comandos, digite exit e pressione Enter.

O que você fez até agora

Você baixou a imagem pré-criada do Docker e executou o contêiner para executar o MQ no RHEL. Os objetos e permissões do MQ da IBM necessários para que os aplicativos clientes se conectem a um gerenciador de filas e possam colocar e obter mensagens da fila são criados automaticamente. O Docker e o MQ usando os recursos e a conectividade de seu computador host.

Dentro do contêiner, a instalação do MQ no RHEL possui os seguintes objetos:

  • Gerenciador de filas QM1
  • Fila DEV.QUEUE.1
  • Canal: DEV.APP.SVRCONN
  • Listener: SYSTEM.LISTENER.TCP.1 na porta 1414

A fila que você usará, DEV.QUEUE.1, “fica” no gerenciador de filas QM1. O gerenciador de filas também possui um listener que atende conexões recebidas, por exemplo, na porta 1414. Os aplicativos clientes podem se conectar ao gerenciador de filas e podem abrir, colocar e obter mensagens e fechar a fila.

Os aplicativos usam um canal do MQ para se conectar ao gerenciador de filas. O acesso a esses três objetos é restrito de diferentes maneiras. Por exemplo, usuário “app”, que é um membro do grupo “mqclient”, tem permissão para usar o canal DEV.APP.SVRCONN para se conectar ao gerenciador de filas QM1 e está autorizado a colocar e obter mensagens da fila DEV.QUEUE.1.

Todos os objetos e permissões do MQ que o aplicativo cliente precisa são criados e configurados quando você executa o contêiner do servidor MQ.

Objetos e permissões na imagem do Docker para o MQ

Etapa 4. Coloque e obtenha uma mensagem usando o MQ Console

O MQ Console é uma interface baseada em navegador da web para interagir com objetos do MQ. Ele vem pré-configurado dentro da versão de desenvolvedor do MQ em um contêiner.

Os administradores usam o MQ Console para administrar gerenciadores de filas. Os desenvolvedores podem usar o MQ Console para testar e depurar aplicativos clientes.

Nós designamos a porta 9443 para o MQ Console usar no início, portanto, se você apontar um navegador em seu sistema local para https://localhost:9443/ibmmq/console/, poderá dar uma olhada em seu gerenciador de filas QM1.

Agora, vamos usar o MQ Console para colocar e obter uma mensagem na fila:

  1. Efetue login no MQ Console com o usuário “admin” e a senha “passw0rd”.
  2. Clique em Gerenciar abaixo do ícone inicial. Uma página será aberta mostrando seus recursos do QM1
  3. Na página de recursos do QM1, clique em DEV.QUEUE.1.
  4. Na página DEV.QUEUE.1 da fila Local, clique no botão Criar para colocar uma mensagem na fila.
  5. Na interface da mensagem, digite Hello World no campo Dados do aplicativo. Em seguida, clique em Criar.
  6. Visualize sua mensagem como uma linha na página da fila.
  7. Clique nos três pontos verticais no canto superior direito para abrir o menu de opções.
  8. Clique em Limpar mensagens para limpar a fila.

Resumo

Neste tutorial, você ativou um gerenciador de filas do MQ em um contêiner e usou o MQ Console para colocar e, em seguida, obter uma mensagem da fila. O contêiner do MQ veio pré-configurado para permitir conexões do cliente recebidas.

Ao começar a desenvolver seus próprios aplicativos clientes para conectar-se ao gerenciador de filas, você seguirá estas etapas:

  1. Configure a conexão com o gerenciador de filas.
  2. Abra uma fila.
  3. Coloque uma mensagem na fila.
  4. Obtenha a mensagem da fila.
  5. Feche a conexão com o gerenciador de filas.

Este processo demonstra o estilo de sistema de mensagens ponto a ponto.

No IBM MQ, o gerenciador de filas é efetivamente o servidor e parte do sistema e os aplicativos que se conectam a ele são os clientes.

Geralmente, são os administradores que cuidam do servidor MQ no qual todos os objetos do MQ estão definidos e o roteamento de mensagens ocorre. Os aplicativos clientes são criados por desenvolvedores e o IBM MQ fornece bibliotecas do cliente que os desenvolvedores devem incluir em seus aplicativos. Essas bibliotecas, também chamadas de clientes do MQ, tratam e usam os objetos do MQ que os administradores configuraram no lado do servidor do MQ. Em cenários mais complexos, as bibliotecas do MQ realizam a maior parte do trabalho pesado do sistema de mensagens para você, portanto, você precisa apenas aprender como usá-las.

É necessária a configuração nos lados do servidor e do cliente para que o sistema de mensagens funcione.

Ao começar a desenvolver aplicativos clientes do MQ, isso ajuda a ter acesso ao seu próprio gerenciador de filas e a uma fila, para testar seu aplicativo cliente. O MQ pré-configurado na imagem do Docker e o contêiner que você pode executar facilmente a partir dele fornecem acesso a um gerenciador de filas e várias opções para configurar objetos do MQ à medida que você começa a desenvolver suas próprios aplicativos do MQ.

Próximas etapas

O que vem a seguir? Grave seu primeiro aplicativo JMS.

Aviso

O conteúdo apresentado aqui foi traduzido da página do IBM Developer nos EUA. É possível conferir o conteúdo original em este link.