Ads Top

Exemplo de uso do RabbitMQ

CC é uma nova agência de táxis com enorme potencial. Hoje, a empresa tem apenas dois taxistas e duas incorporadoras, mas quer se expandir muito no próximo ano. CC já construiu um site em Ruby e começou com um back-end, também escrito em Ruby, que armazena viagens de CC em um banco de dados. O CC também tem alguns scripts, escritos em Python, que geram relatórios de rota. 


Até agora, o sistema do CC funciona da seguinte maneira:


  • O site e o blog da empresa são executados em Ruby. 
  • O web app que armazena dados de rota, como o ponto de partida e o ponto final da viagem, é escrito em Ruby. 
  • Há um back-office que envia atualizações de rota aos motoristas e está escrito em Scripts Ruby.
  • Multiple ad hoc Python são usados para extrair dados de mensagem para gerar relatórios de rota. 
  • Os aplicativos do táxi são escritos em Python.

A arquitetura antiga é ilustrada da seguinte forma:





Por que o CC está pensando em adicionar o RabbitMQ a um ambiente já ocupado? O principal motivo é por causa de um novo recurso que a CC deseja oferecer aos seus clientes - eles desejam criar um aplicativo de táxi que controle as reservas em trânsito. CC também deseja escalar sem dor. 


O plano é construir um aplicativo onde os usuários possam reservar um carro pelo smartphone, receber a confirmação da reserva e visualizar o carro se aproximando do ponto de partida da viagem. Visto que o CC já possui alguns serviços em diferentes idiomas, e como o CC deseja poder para escalar facilmente, eles decidiram usar um middleware orientado a mensagens pronto, como RabbitMQ para comunicação assíncrona entre o aplicativo, o cliente e o backend. 


À medida que o conhecimento e o uso do RabbitMQ pelo CC aumentam, eles descobrirão novas oportunidades para aproveitá-lo no ambiente. Por enquanto, vamos seguir o CC conforme ele inicia com sua primeira etapa para trabalhar com o RabbitMQ.


Preparando-se para o RabbitMQ


Para começar, as três etapas de instalação e configuração a seguir precisam ser concluídas: 


  • Instalando o broker RabbitMQ
  • Instalando o plugin de gerenciamento (IU da Web) 
  • Configurando o vhost e user


Vamos começar instalando o broker!


Instalar o broker


CC executa seus servidores de produção no Ubuntu Linux. Um desenvolvedor possui macOS e Linux, enquanto o outro é totalmente Windows. Essa heterogeneidade não é uma preocupação para RabbitMQ, que pode ser executado nativamente em todos esses sistemas operacionais. 


O RabbitMQ fornece guias de instalação online completos para todos os sistemas operacionais suportados, e eles podem ser encontrados aqui: http://www.rabbitmq.com/download.html. Este artigo contém instruções para Debian/ buntu, onde RabbitMQ é instalado a partir do repositório apt. 

Ele também contém instruções para o Docker mais adiante, por isso se você está usando Windows, eu indico o Docker.

Instalando o RabbitMQ no Ubuntu

Existem relativamente poucos passos necessários para instalar o RabbitMQ. 


Eles são os seguintes: 

  1. Atualize o Ubuntu.
  2. Baixe e instale a chave do repositório.
  3. Certifique-se de que a chave está no repositório.
  4. Instale o RabbitMQ do repositório do pacote.


Certifique-se de que o Ubuntu está atualizado antes de iniciar o processo de download. Certifique-se de que o sistema operacional esteja usando as versões mais recentes de todos os softwares, pois dependências desatualizadas criam vulnerabilidades de segurança. 

Execute o comando apt update para baixar as versões mais recentes do software instalado:


apt upgrade


RabbitMQ requer vários pacotes de software. Verifique se curl, apt-transport-https e GnuPG estão no sistema executando o seguinte comando:


sudo apt install curl gnupg -y

sudo apt install apt-transport-https


A opção -y aceita qualquer licença para essas dependências. O Ubuntu instala todos os subpacotes necessários. Descubra o nome do sistema operacional executando qualquer um dos seguintes comandos:


  • cat /etc/os-release
  • lsb_release -a
  • hostnamectl


O nome da versão não é técnico. Os nomes anteriores incluem focal e biônico. O Ubuntu não inclui RabbitMQ por padrão, então ele deve ser adicionado à chave do repositório antes de continuar. Execute o seguinte conjunto de comandos em um Terminal:


curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc 

sudo apt-key add -

sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF

deb https://dl.bintray.com/rabbitmq-erlang/debian [os release name] erlang

deb https://dl.bintray.com/rabbitmq/debian [os release name] main

EOF


Esses comandos baixam a chave e a adicionam à lista de repositórios antes de adicionar os pacotes de sistema operacional apropriados para o broker e Erlang.


RabbitMQ é escrito em Erlang, uma linguagem funcional que possui suporte integrado robusto para a criação de redes distribuídas. 


Os desenvolvedores mantêm uma lista de versões mínimas (https://www.rabbitmq.com/which-erlang.html) do idioma para os últimos lançamentos suportados do broker. No momento em que este artigo foi escrito, o RabbitMQ 3.8 era compatível com Erlang 21.3 a 23.


RabbitMQ agora pode ser instalado corretamente.


Execute os seguintes comandos para instalar o RabbitMQ:


sudo apt install -y rabbitmq-server

sudo apt install librabbitmq-dev 


Instalando RabbitMQ em contêineres Docker


Docker permite a separação e controle de recursos sem o risco de corromper o sistema operacional. As instruções para instalar o Docker estão disponíveis no site oficial: https://docs.docker.com/get-docker/. Com o Docker instalado, extraia a imagem RabbitMQ:


docker pull rabbitmq


Execute o corretor com padrões razoáveis:


docker run -d --hostname my-rabbit --name my-rabbit -p 5672:5672 -p 15672:15672 -e RABBITMQ_ERLANG_COOKIE='cookie_for_clustering' -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password  --name some-rabbit rabbitmq:3-management


Um contêiner Docker precisa ser criado para que seja acessível a partir do host local com o console de gerenciamento ativado. Isso será descoberto em breve.


Iniciar RabbitMQ


Instalando o servidor RabbitMQ a partir do repositório também instala um conjunto de ferramentas de linha de comando usado para iniciar o servidor pela primeira vez. Isso é feito executando o seguinte comando:


rabbitmq-server start 


O servidor inicia em primeiro plano. Para executar o corretor como um serviço, use os seguintes comandos:


sudo systemctl enable rabbitmq-server

sudo systemctl start rabbitmq-server

sudo systemctl status rabbitmq-server


O comando systemctl também pode ser usado para gerenciar serviços no Ubuntu. A saída do comando final deve mostrar que o broker está em execução. Consulte a documentação do RabbitMQ (https://www.rabbitmq.com/trouidere.html) se não.


Verificando se o broker RabbitMQ está em execução 


Agora, verifique se o corretor RabbitMQ está realmente funcionando usando o comando de serviço de status. Escreva a seguinte linha no Terminal:


sudo service rabbitmq-server status


As pastas padrão onde o pacote tem arquivos instalados são /etc/rabbitmq para arquivos de configuração, /usr/lib/rabbitmq para arquivos de aplicativos e /var/lib/rabbitmq para arquivos de dados (mnesia).


Observe os processos em execução do RabbitMQ e encontre o wrapper de serviço e a VM Erlang (também conhecida como BEAM) que está em execução, da seguinte maneira:



É possível que, quando o RabbitMQ é executado, um processo denominado epmd também esteja em execução. Este é o daemon de mapeamento de porta Erlang, que é responsável por coordenar os nós Erlang em um cluster. 


Espera-se que ele seja iniciado mesmo se o aplicativo RabbitMQ em cluster não estiver em execução. Observe que, por padrão, o serviço do broker é configurado para iniciar automaticamente quando o host Linux é iniciado.


Instalando o plug-in de gerenciamento (IU da Web) 


RabbitMQ não instala um console de gerenciamento por padrão, mas o plug-in opcional baseado na web usado neste exemplo facilita a visualização de uma instância RabbitMQ em execução. 


O pacote Debian instala vários scripts. Um deles é o rabbitmq-plugins. Seu objetivo é nos permitir instalar e remover plug-ins. Use-o para instalar o plug-in de gerenciamento, da seguinte maneira:


sudo rabbitmq-plugins enable rabbitmq_management 


Sim, é tão fácil! 


Use um navegador da web para acessar a página inicial do console de gerenciamento navegando para http: // <hostname>: 15672, conforme mostrado na seguinte captura de tela:




Fique ligado no próximo episódio - criando e configurando usuários!

Nenhum comentário:

Tecnologia do Blogger.