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.
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:
- Atualize o Ubuntu.
- Baixe e instale a chave do repositório.
- Certifique-se de que a chave está no repositório.
- 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:
Postar um comentário