.Net ile RabbitMQ kullanımı

RabbitMQ, bir mesaj kuyruğu yapısıdır(message queue / broker). Bir uygulamadan aldığı mesajı zamanı geldiğinde başka bir uygulamaya iletir. Gerçek hayattan bir örnek verecek olursak bunu bir postacıya benzetebiliriz. Almış olduğu postayı zamanı geldiğinde postanın sahibine iletir.

RabbitMQ bize nasıl yardımcı olur?

Uygulamalarımızda her zaman yapılacak işlerin hemen yapılmasına gerek duymayabiliriz. Bu gibi durumlarda RabbitMQ (veya benzeri yapıları) kullanarak, anında yapılmasına ihtiyaç duyulmayan işler bir kuyruk yapısına alınır. Sonrasında kuyrukta bulunan işler asenkron olarak alınarak işleme koyulur. Bu şekilde uygulamamızın trafiğini de boş yere bekletmemiş oluruz.

Şimdi RabbitMQ kullanarak basit bit .Net console uygulaması yapalım. Uygulamamızı yapabilmek için öncelikle Erlang kurulumu yapmamız gerekiyor. (RabbitMQ Erlang üzerinden çalışıyor.)

Kurulumlar:

1)Erlang kurulumu için bu linkten sistemimize uygun kurulum dosyasını indirerek kuralım.

2)RabbitMQ için bu linkten kurulumu işletim sistemine göre yapalım.

3)RabbitMQ’ya ait pluginleri sistemimizde aktif etmek için aşağıdaki komut satırlarını çalıştıralım. (cmd ekranını yönetici olarak açmamız gerekiyor)

cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.12\sbin
rabbitmq-plugins.bat enable rabbitmq_management

4)Services’ı açıp RabbitMQ üzerine gelip restart edelim.

5)RabbitMQ’nun varsayılan portu: 15672. Tarayıcımızı açıp adres çubuğuna http://localhost:15672 yapıştırıyoruz. Burada bizden Username ve Password isteyecektir. Her ikisininde varsayılan değeri guest olarak ayarlıdır. Giriş yaptıktan sonra aşağıdaki gibi bir ekran karşımıza çıkıyor.

Evet buraya kadar kurulumları düzgün bir şekilde yaptık ve RabbitMQ artık bilgisayarımızda servis olarak çalışıyor.

Uygulamaya başlamadan önce, RabbitMQ ile ilgili bilmemiz gereken üç önemli terim var. Bunlar;

  1. Producer: Mesajı gönderecek olan kaynak.
  2. Queue: Mesajların sıraya alındığı kuyruk yapısı. Burada kuyruk yapısı FIFO(First In First Out) mantığı ile çalışır. Yani kuyruğa ilk giren ilk çıkar.
  3. Consumer: Mesajı alacak olan, yani kuyruğu dinleyen yer.

RabbitMQ kullanarak basit bir örnek yapalım.

Bir cmd ekranı açalım ve projemizi oluşturmaya başlayalım:

mkdir NetRabbitMQ
cd NetRabbitMQ
dotnet new sln -n NetRabbitMQ
dotnet new console -n NetRabbitMQ.Sender
dotnet sln NetRabbitMQ.sln add NetRabbitMQ.Sender/NetRabbitMQ.Sender.csproj
dotnet new console -n NetRabbitMQ.Receiver
dotnet sln NetRabbitMQ.sln add NetRabbitMQ.Receiver/NetRabbitMQ.Receiver.csproj

Projemize kütüphaneleri ekleyelim.

cd NetRabbitMQ.Sender
dotnet add package RabbitMQ.Client
dotnet add package Newtonsoft.Json
dotnet restore
cd ../NetRabbitMQ.Receiver
dotnet add package RabbitMQ.Client
dotnet add package Newtonsoft.Json
dotnet restore

Buraya kadar projemizin temelini oluşturduk. Sender olarak oluşturduğumuz konsol projesi Producer tarafı, Receiver ise Consumer tarafı olacak. Şimdi kod yazmaya başlayabiliriz.

1)Sender projesine EmailTemplate.cs isimli bir class oluşturuyoruz:

2)Sender projesinin Program.cs dosyasını açıyoruz:

3)Receiver projesinin Program.cs dosyasını açıyoruz:

İlk Sender’ı çalıştırıyoruz ve aşağıdaki sonucu görüyoruz:

RabbitMQ içerisinde ise mailin eklendiğini görüyoruz:

Receiver’ı çalıştırıyoruz ve eklemiş olduğumuz maili kuyruktan çektiğimizi görüyoruz:

Bu yazımızda RabbitMQ kurulumunun nasıl yapılacağını ve bir .Net projesi ile nasıl kullanabileceğimize baktık.

Okuduğunuz için teşekkürler…

Proje kaynak kodları

Konu ile ilgili yararlandığım kaynaklar:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir