ASP.NET Core e Azure Service Bus: mensageria na nuvem - Parte 2

Nesta segunda é última parte sobre o ASP.NET Core e o Azure Service Bus, vou ensinar a como consumir uma mensagem publicada em uma fila dele. Além disso, vou mostrar como deserializá-la em um objeto e acessar suas propriedades, enviando um e-mail de notificação usando o SendGrid como um cenário mais realista para o seu projeto.

Código fonte aqui.


Recapitulando

Na primeira parte, eu mostrei como publicar uma mensagem no Azure Service Bus. Com a mensagem na fila, o próximo passo é criar um “consumidor” para ela. Em nosso caso, nada mais é do que uma classe, com um método que receberia nossa mensagem da fila.


Criando um “consumidor”

O Azure Service Bus tem duas opções para recepção de mensagens: o ReceiveAndDelete e PeekLock. Na primeira opção, a mensagem é recebida e já marcada como consumida. Com isso, a mensagem é perdida em caso de falha. Já na segunda, o processamento é feito em duas etapas. A mensagem é bloqueada para consumo por outros clientes, e então é enviada ao cliente atual. Após o processamento, chama-se o método CompleteAsync nela, e a mensagem é então marcada pelo Service Bus como consumida.

As principais classes utilizadas para a recepção de mensagens são :

  • MessageHandlerOptions: configura opção de recebimento e concorrência;
  • QueueClient: através do método RegisterMessageHandler, permite passar um método para o processamento de mensagens recebidas na fila;

No código abaixo, mostro a implementação de uma classe para processar a mensagem com a estrutura mostrada no artigo anterior.

Implementação da classe Consumer

Também pode-se ver a deserialização da mensagem. Lembrando que o conteúdo da mensagem é um array de bytes (contido na propriedade Body do objeto de tipo Message).

Detalhes sobre o NotificationService será mostrado logo a seguir.


Enviando um e-mail

Em um artigo passado, eu mostrei como enviar mensagens usando o SendGrid.

Para deixar este um exemplo mais real e aplicável ao seu projeto, vou realizar o envio de notificações via e-mail usando os dados da mensagem consumida.

Para isso, criei um serviço de Notificação com a interface a seguir.

Interface do serviço de notificação

E a sua implementação a seguir, usando o SendGrid.

Implementação do serviço de notificação

Configurando a classe Startup

Na classe Startup, mais especificamente no método ConfigureServices, adicionamos o serviço do SendGrid e do EmailNotificationMessageConsumer para nossa aplicação.

Configuração da classe Startup

Executando

Agora executamos a aplicação. 

Caso não tenhamos uma mensagem na fila e queiramos testar apenas o recebimento, façamos o seguinte: navegamos até o nosso serviço do Service Bus, selecionamos nossa fila e clicamos em “Service Bus Explorer (preview)”. Escolhemos o “Content Type” como “Application/json”, preenchemos com um objeto e clicamos em “Send”.

Envio de mensagem usando o Service Bus Explorer

Podemos utilizar um ponto de interrupção para verificar se a classe de consumo de mensagens está funcionando, como a imagem a seguir mostra.

Debugando a classe Consumer

Tudo funcionando como devido!


Quer alavancar sua carreira como Desenvolvedor(a) .NET?

Opa, aqui é o Luis Felipe (LuisDev), criador do blog LuisDev.

Além de Desenvolvedor .NET Sênior, eu sou instrutor de mais de 700 alunos e também tenho dezenas de mentorados.

Conheça o com mais de 800 video-aulas sobre C# e desenvolvimento de APIs com ASP NET Core, Microsserviços com ASP NET Core, Arquitetura de Software, Computação em Nuvem, SQL, HTML, CSS e JavaScript, JavaScript Intermediário, TypeScript, Desenvolvimento Front-End com Angular, e Desenvolvimento Front-end com React. Diversos mini-cursos disponíveis aos alunos e atualizações gratuitas.

Suporte dedicado, e comunidade de centenas de alunos.

Completo e online, destinado a profissionais que querem dar seu próximo passo em sua carreira como desenvolvedores .NET.

Clique aqui para ter mais informações e garantir sua vaga


Conclusão

Com essa série de artigos, o objetivo foi mostrar como iniciar e desenvolver uma solução envolvendo ASP.NET Core, mensageria na nuvem Microsoft Azure, e envio de e-mails/notificações. Foram apresentadas as vantagens de se utilizar mensageria, e exemplos de cenários em que essa solução pode ser útil.

Todo feedback é bem-vindo, e até o próximo artigo!