RabbitMQ – Fanout Exchange

Selamlar,bu makalede Fanout Exchange yapısı üzerine konuşuyor olacağız.Temel bir girişin ardından örnek bir uygualama ile konuyu kavramaya çalışacağız.

Exchange yapısı gönderilen mesajların karşılanıp ilgili kuyruklara, belirlenen kurallar çervesinde dağıtımını gerçekleştiren yapıdır. RabbitMQ Nedir? makalemizde gerçekleştirdiğimiz örnekte herhangi bir exchange yapısı kullanmadan direk olarak Queue bağlanıp mesajımızı göndermiş ve okumuştuk. Şimdi ise gönderilen mesajların ilgili kuyruklara dağıtımı için araya bir exchange yapısı ekliyor olacağız.

Fanout Exchange yapısı gelen mesajların alınıp ayırım yapmadan tüm kuyruklara eşit bir şekilde iletilmesini sağlayan yapıdır. Producer mesajı gönderir Fanout Exchange mesajı karşılar ve tüm kuyruklara dağıtımını gerçekleştirir. Geriye kalan ise Consumer‘ın mesajları okuyup işlemesidir.

Şimdi ise örnek uygulamamız üzerinden Fanout Exchange yapısını daha iyi anlamaya çalışalım.

Producer

Kodlarımızı inceleyecek olursak ConnectionFactory sınıfından bir nesne yaratılır. Yaratılan bu sınıf üzerinden HostName set edilir. ConnectionFactory sınıfı bizim RabbitMQ hostuna bağlanmamıza sağlayacak olan sınıftır. Daha sonra CreateConnection()methodu ile bağlantı gerçekleştirilir.

CreateModel() methodu ile yeni bir channel oluşturulur.Channel üzerinden ExchangeDeclare() methodu ile yeni bir exchange oluşturulur. Son olarak ilgili channel kullanılarak BasicPublish() methodu ile mesaj exchang’e gönderilir.

Consumer

QueueDeclare() methodu ile yeni bir Queue oluşturulur.Oluşturulan Queue QueueBind()methodu kullanılarak ilgili exchange bind edilir. EventingBasicConsumer sınıfından bir nesne yaratılır.Oluşturulan channel parametre olarak geçilir.Üretilen nesne üzerinden Received event’i tetiklenir ve kuyruk dinlemeye alınır.Son olarak BasicConsume methodu ile ilgili kuyruktan mesaj alınır ve işlenir.

Fanout Exchange‘in çalışma yapısına baktığınızda gönderilen mesajın kuyruğu dinleyen tüm consumer’lara ayrım yapılmadan eşit bir şekilde dağıtıldığını göreceğiz.Örneğin döviz kuru,hava durumu vb bilgilerinin alınıp ilgili kuyruğu dinleyen tüm consumerlara gönderilmesi. Bu tür global bilgilendirme ve dağıtım senaryoları için oldukça uygun bir yapıdır diyebiliriz.Senaryolar değişkenlik gösterebilir. Hangi exchange yapısını kuracağınızı senaryonuz belirleyecektir.

Benim bu makalede aktaracaklarım bu kadar. Umarım faydalı ve anlaşılır bir yazı olmuştur. Bir sonraki makalede Direct Exchange konusu ile devam ediyor olacağız. Hoşçakalın 🙂

Source


https://www.rabbitmq.com/documentation.html
https://github.com/eaktassssss/RabbitMQExchange

BUNLAR DA HOŞUNUZA GİDEBİLİR...

Bir cevap yazın

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