Rabbit MQ Kurulum & HelloWorld

Merhaba,

Bu yazımızda message broker olarak bilinen rabbit mq ile ilgili küçük bir tanıtım,kurulum ve demo çalışması yapacağız.

https://en.wikipedia.org/wiki/RabbitMQ buradaki açıklamaya göre ;

“RabbitMQ, başlangıçta Gelişmiş Mesaj Kuyruklama Protokolünü (AMQP) uygulayan ve o zamandan beri Akışlı Metin Yönelimli Mesajlaşma Protokolünü (STOMP) desteklemek için bir eklenti mimarisiyle genişletilen açık kaynaklı bir mesaj aracı yazılımıdır (bazen mesaj odaklı ara katman yazılımı olarak adlandırılır).

Erlang’da yazılan RabbitMQ sunucusu, kümeleme ve yük devretme için Açık Telekom Platformu (Open Telecom Platform) çerçevesi üzerine kurulmuştur. Aracıyla arabirim oluşturmak için istemci kitaplıkları, tüm ana programlama dilleri için mevcuttur. Kaynak kodu Mozilla Kamu Lisansı altında yayınlanmıştır.”

İlk olarak rabbit mq nun çalışması için erlang dilini compile edecek alt yapıyı kurmamız gerekiyor;

https://www.gencayyildiz.com/blog/rabbitmq-windows-isletim-sistemi-icin-kurulum-ve-ortam-tanitimi/ gençay hocanın kurulumdaki önergelerini izleyip kurulumu gerçekleştiriyoruz;

KURULUM İŞLEMLERİ

https://www.erlang.org/downloads buradaki link üzerinden windows için gerekli olanı indiriyoruz 24.1.5 sürümü bu yazıyı hazırlarken ki sürüm notu bu arada.

next next ile kurulumu tamamlıyor;

https://www.rabbitmq.com/download.html buradan da rabbit mq server ı indiriyoruz (3.9.9)

kurulum sırasında güvenlik duvarı uyarısı alınırsa erl dili için vs izin verilir.

rabbit mq sunucusunu aktif hale getirmek için sbin klasörünün olduğu path e gidilir

“C:\Program Files\RabbitMQ Server\rabbitmq_server-3.9.9\sbin” , path kopyalanır.

cmd ile komut dosyası çalıştırılır şu kod ile çalıştırılır;

rabbitmq-plugins enable rabbitmq_management

15672 portunda rabbit sunucusu çalışıyor görünüyor artık, guest guest ile login oluyoruz;

Login olduktan sonra genel görünüm arayüzü açıyor.

Admin tab’ında , bağlı bulunan kullanıcı bilgisi ile yeni kullanıcı oluşturma fonksiyonu görülüyor.

Queues tabında , kuyrukta olan veriler görüntüleniyor;

Exchange tab ında muhtemelen hangi protokolü kullanarak transfer yaptık onu göreceğiz;

Channels tab ında uygulama tarafında açılan kanalları;

Connection tab ında da, uygulamaya yapılan bağlantıları göreceğiz;

1-Helloworld senaryosu

Rabbit mq nun kendi sitesindeki senaryoları test etmeye başlıyoruz;

https://www.rabbitmq.com/getstarted.html

  • “Hello World” yani giriş uygulaması

https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html

Sender ve Receiver olarak 2 tane console uygulamasını net 5.0 altyapısında açıyorum;

daha sonra her 2sini de

RabbitMQ.Client 

paketini yüklüyorum;

Connection ı kurmak için aşağıdaki kodları kullanıyoruz;

ConnectionFactory methoduna gönderilecek parametrelerle bir nevi connectionString i belirtiyoruz; rabbit mq sunucumuz localhost ta 15672 numaralı portta olduğunu belirtiyorum,

sunucuya bağlantı için pasw ve username i bu örnek için vermiyoruz çünkü metadata bilgisinde default erişim bilgileri tanımlanmış.

CreateConnection methoduyla bağlantıyı açıyoruz CreateModel ile de kanalımızı açıyoruz, bu kanal üzerinden göndereceğimiz veriyi consumer uygulamamız olan receiver dan alaacğız.

QueueDeclare ile kuyruğa gönderilecek olan datanın hangi parametreye bağlı olacağı gibi verileri tamamlıyoruz;

BasicPublish te de hangi kuyrukparametresine hangi datayı göndereceğimizi belirliyoruz;

Uygulamayı çalıştırıyorum;

mesaj kuyruğa düşmüş oldu;

Publisher tarafında veri bu şekilde gönderiliyor, şimdi de alıcı taraftaki yapılandırmaya bakıyoruz;

Buradaki yapı RabbitMQ’dan gelen mesajları dinliyor. Bu nedenle, tek bir mesaj yayınlayan Publisher ın aksine, tüketicinin mesajları dinlemesi ve yazdırması için sürekli çalışmasını sağlayacağız.

kurulumu Publisher ile aynıdır; bir bağlantı ve bir kanal açıyoruz ve tüketeceğimiz kuyruğu (“hello”) tanımlıoyurz.

Kodu incelediğimizde 1 ve 3.cü kısımdaki yapının hemen hemen aynı olduğunu görüyoruz, 3te body değil artık consumer yani tükeceğimiz parametreyi istiyor.

2 de ise kanalı dinleyen bir yapı açmış oluyoruz;

Consumer uygulaması olan receiver ı da çalıştıyorum;

Uygulamam üzerinde bu datayı görüyorum;

sunucusunu kontrol ediyorum;

Receiver ı da çalıştırdıktan sonra kanal sekmem de açılan kanala ait veri görünüyor;

Connection tab ında da yaptığımız bağlantıya ait veri bulunuyor.

Kuyruk tabında ise, hello parametresindeki veri (mesaj) iletildiği için herhangi bir bekleyen birşey görünmüyor. hello kuyruğu aktif ama tabiki.

rabbit mq nun ilk örneğini tamamlamış olduk.

Yorum bırakın