[RabbitMQ] Gerenciando Mensagens no C#
Estou atualmente trabalhando em um projeto com filas usando RabbitMQ e achei interessante escrever esse artigo para compartilhar a experiência com vocês.
No exemplo irei utilizar plataforma Windows, RabbitMQ, C# e Visual Studio 2017.
Requisitos:
- ErLang;
- RabbitMQ
Instalação
Instalar Erlang para Windows.
Link para Download: http://www.erlang.org/download.html
Selecione a versão correspondente ao seu sistema operacional: OTP 32Bit Binary File ou OTP 64Bit Binary File.
Instalar o RabbitMQ para Windows
Link para Download: http://www.rabbitmq.com/download.html
Após a instalação do RabbitMQ localize o Command Prompt do RabbitMQ, lembre-se de executar como administrador.
No prompt de comando execute o seguinte comando:
rabbitmq-plugins enable rabbitmq_management
Após isso abra o seu navegador e acesse a seguinte url:
Você será solicitado para inserir usuário e senha:
User: guest
Password: guest
Você deverá visualizar a seguinte tela
Feito isso a parte de instalação está concluída, claro que outras configurações podem ser executadas mas o objetivo desse tutorial não é entrar em detalhes na configuração do RabbitMQ e sim realizar manipular as informações através do C#.
No projeto de exemplo, hospedado aqui estou usando Console Application e .NET Framework 4.5.2.
É necessário instalar o pacote RabbitMQ.Client através do Package Manager Console
Install-Package RabbitMQ.Client
Basicamente para usar filas, criar queues, enviar e receber mensagens você precisará de dois objetos:
- ConnectionFactory;
- IConnection;
Criando a Connection Factory
Criando a Connection:
Criando uma nova Queue
Os parâmetros para criar a queue são:
- Queue (string) — Nome da Fila;
- Durable (bool) — Quando a fila é marcada como durable, a fila permanece ativa quando o servidor é reiniciado.
- Exclusive (bool) — Filas exclusivas só podem ser acessadas através da conexão corrent e são excluídas quando a conexão é fechada.
- AutoDelete (bool) — Quando ativada a file é automaticamente excluída após todos os consumidores terminarem de usá-la.
Escrevendo mensagens na fila:
Retornando mensagens da fila:
Resultado:
A AsciiArt utilizei o seguinte pacote: AsciiArtLibrary
Clique aqui para realizar o download do fonte utilizado no exemplo.
Espero que tenham gostado, até o próximo !