.NET

17 jul, 2018

.NET Core + Mensageria: exemplos utilizando RabbitMQ e Azure Service Bus

Publicidade

Message Brokers são soluções voltadas para trocas de mensagens entre diferentes aplicações. O uso deste tipo de tecnologia está comumente associado à integração entre projetos e emprega, um pattern de mensageria conhecido como publish-subscribe, o qual prevê uma aplicação (publisher) da qual se originam as mensagens, geralmente uma fila (queue) controlada pelo Message Broker e um ou mais consumidores (subscribers) desta queue.

A imagem a seguir traz uma representação esquemática deste padrão:

Dentre as vantagens oferecidas pela adoção de mecanismos de mensageria, é possível destacar:

  • Um menor acoplamento entre aplicações, com os projetos que se comunicam via mensageria desconhecendo, na maior parte das vezes, detalhes de implementação das diferentes partes envolvidas;
  • A possibilidade de integrar aplicações construídas em diferentes plataformas de desenvolvimento, já que muitas soluções de mensageria contam com suporte a diversas tecnologias;
  • Uma forma elegante de segregar processos de longa duração, com uma aplicação gerando uma mensagem que indica a necessidade de realização de uma tarefa específica e outro projeto cuidando da execução de tal ação.

Este artigo traz dois exemplos empregando soluções de mensageria em aplicações baseadas no .NET Core 2.0 e no ASP.NET Core 2.0:

  • Os Message Brokers empregados foram o RabbitMQ e o Azure Service Bus;
  • Em ambos os exemplos, haverá uma API REST que retornará a cotação mais recente de moedas estrangeiras, como dólar norte-americano e euro, contando ainda com a possibilidade de geração de uma mensagem enviada ao Broker para a carga de valores mais recentes;
  • Uma Console Application atuará como subscriber, recebendo mensagens e efetuando a carga dos dados de cotações. Esse projeto utilizará o Selenium WebDriver para a navegação e extração de dados em uma página Web que contém os valores atualizados de diversas moedas estrangeiras, além do Dapper como mecanismo de acesso a dados.

Utilizando o RabbitMQ

Open source e multiplataforma (contando ainda com suporte a containers Docker), o RabbitMQ é, sem sombra de dúvidas, uma das alternativas mais populares tratando-se de Message Brokers. Aplicações construídas em tecnologias como .NET, Node, Java, Ruby e Python podem se beneficiar dos recursos oferecidos por esta solução em projetos que dependam de mecanismos de mensageria.

No repositório a seguir, temos exemplos de uso do RabbitMQ com o .NET Core 2.0 e o ASP.NET Core 2.0:

Aplicações .NET podem interagir com um Broker baseado no RabbitMQ, empregando para isto o package RabbitMQ.Client (este último já compatível com o .NET Standard):

O RabbitMQ foi também tema de um hangout do Canal .NET neste ano de 2018. A gravação se encontra disponível no YouTube e pode ser assistida gratuitamente (inclusive os projetos aqui mencionados foram descritos em detalhes neste vídeo):

Utilizando o Azure Service Bus

Alternativa ao RabbitMQ, o Service Bus é um serviço de mensageria que integra o Microsoft Azure. A seguir, está uma nova versão do mesmo exemplo apresentado na seção anterior já adaptado para uso desta solução (inclui o uso do Application Insights, serviço de monitoramento que integra a plataforma de cloud computing da Microsoft):

Em aplicações .NET, o package Microsoft.Azure.ServiceBus (também compatível com o .NET Standard) permitirá a integração com o Azure Service Bus:

Referências