C# RabbitMQ Kullanımı

ihsan güç
3 min readDec 19, 2021

Herkese selamlar, iyi okumalar.

Tanım olarak mesaj kuyruğu denebilir, tabi sadece mesaj için değil yapılan herhangi bir iş olabilir. Genelde sistemlerde çok istek (request) alan kısımları aynı anda değil sıra halinde sisteme dahil edilerek sistemdeki yaşanacak aksaklıkların yaşamasını önlemeye çalışır.

Picture Onwer: https://gifer.com/en/1RUV
Picture Owner Link

Örnek (Bankalarda EFT, E-Ticaret sitelerinde) vermek gerekirse şuan çok yaygın olan bir konudan vermek istiyorum bir tane alt coin çıktı x borsasına ve erken kayıt yok ve sadece belirlenen saatlerde girip alabiliyorsun ve herkes aynı anda sisteme girdiğinde herkesi bir kuyruk sistemine koyuyor ve sistemde aksaklık yaşanmasını önüne geçiyor.

İlk başta rabbitmq adresinden rabbitmq.exe indiriyoruz ve bilgisayarımıza kuruyoruz. Kurulduktan sonra http://localhost:15672/ localhost rabbitmq sayfamıza giderek başlangıçta Username = guest and Password = guest yazarak girebiliriz.

https://www.rabbitmq.com/install-windows.html#installer

C# projesini açıyoruz ve burada iki tane console uygulaması oluşturacağız bir tanesi sender diğeri receiver olacaktır. Sender ile queue yapılacak işlemi göndererek diğer oluşturduğumuz receiver ile sistemden dinleyerek işlemi gerçekleştireceğiz. Ben proje olarak hayvan isimlerini göndererek console ekranına yazdıracağım. Sender için bir tane console uygulaması oluşturuyoruz. Nuget Package Manager’dan RabbitMQ.Client projemize dahil ediyoruz.

Aşağıdaki kod parçacığını anlatmak gerekirse 6–12 arası queue isimlerini belirleme ve kullanacağımız veriyi liste haline getirdik. Daha sonra rabbitmq ile localhost üzerinden bağlantı kuruyoruz username ve password girerek eğer localhost üzerinden işlem yapıyorsanız username ve password’da gerek olmayacaktır. Queue oluşturduktan sonra hayvan isimlerini ilk 2 queue 21 tane 3'üncü queue ise kalan verileri dahil ettim.

Yukarıdaki kod çalıştığında eğer queue yok ise oluşturur varsa ise üstüne ekler ve http://localhost:15672/#/queues giderek queue da bekleyenleri görebilirsiniz.

Burada lazım değil fakat eğer bir email sistemi olsaydı 1 dakikada bir sistemdeki bekleyen email’leri kuyruğa sokmak için sender programını Task Scheduler oluşturarak her 1 dakika çalışarak bekleyenleri queue sokacaktır. Bizde similator yaptığımızdan bizde bir tane Task Scheduler oluşturacağız.

Bir tane Basic task oluşturuyoruz kısmına tıklıyoruz ve aşağıda ise release aldığımız .exe seçerek çalışacak yolu belirliyoruz ve zamanı geldikçe sürekli olarak çalışacaktır.

Receiver c# projesini oluşturduktan sonra aşağıdaki kod direk olarak queue olanları dinliyor.

Üç tane queue aynı anda okuyarak console ekranına çıktıları gösteriyor. Eğer benim her bir queue farklı işlem hepsi neden aynı yerde işliyor farklı olsun diyorsanız 12–21 satır arasındaki kod satırını değiştirerek istediğiniz gibi özelleştirebilirsiniz.

Yazı burada bitiyor okuduğunuz için teşekkür ederim. Emre Oruçoğlu yardımlarınız ve sorularıma cevap verdiğiniz için teşekkürler.

Kaynaklar

--

--