Yazılım dünyasında kuyruk ile ilgili işlem yapmak isteyip adını bilmeyenin olmadığı RabbitMQ nedir ?
RabbitMQ açık kaynaklı bir message broker’ dır. Temel işlevi, dağıtılmış sistemler arasında mesajlar almak, yönlendirmek ve teslim etmek için bir araçtır. message queqe’ larını, worker’ları kullanarak mesajların gönderilmesi, alınması ve işlenmesi süreçlerini kolaylaştırır.
Peki Consumer ve Producer mantığı nedir ? Producer aslında ilgili mesajın gönderiminin sağladığı, consumer ise bu mesajları alıp işleyen kısıma denir.

Yukarıdaki görselde RabbitMQ’ nun işleyiş yapısını kısaca anlayabiliriz. RabbitMQ da kuyruğa alınan mesajlar Queue’ lara aktarılırken belirtilen Exchange Type’ a göre işlem yapar. Bu exchange type’lar:
- Direct Exchange: Bu tip, mesajı belirli bir yönlendirme anahtarı (routing key) ile eşleşen kuyruklara gönderir. Yani, mesaj, yönlendirme anahtarına sahip kuyruklara gönderilir.
- Fanout Exchange: Fanout değişimi, mesajı bağlı tüm kuyruklara dağıtır. Yani, mesajı alan tüm kuyruklara gönderir, yönlendirme anahtarı dikkate alınmaz.
- Topic Exchange: Bu tip, yönlendirme anahtarlarını kullanarak mesajları kuyruklara yönlendirir. Yönlendirme anahtarları, belirli bir desenle eşleşen kuyruklara gönderilir. Bu, yüksek esneklik sağlar ve birden çok kuyruğa mesaj göndermek için karmaşık desenler kullanılabilir.
- Headers Exchange: Bu tip, mesajı belirli başlık değerleriyle eşleşen kuyruklara gönderir. Başlık değerleri, mesajın içinde belirtilen başlık özellikleridir.
Genel anlamda bir RabbitMQ mesajının nasıl çalıştığına bakalım.
- Publisher exchange tarafına bir ileti gönderir.
- Exchange iletilen mesajı alır ve artık mesajın yönlendirilmesinden sorumludur. Exchange içerisinde farklı türlerde mesaj türleri barındırabilir. (Routing key gibi)
- Exchange ve queue’lar arasındaki bağ exchange üzerinde oluşturulmalıdır.
- Gönderilen mesaj Consumer tarafından handle edilene kadar queue’ da kalır.
- Consumer mesajı handle eder.
Peki bir routing key’ in olması neyi ifade eder ?
RabbitMQ’da bir routing key, mesajları belirli bir alıcıya yönlendirmek için kullanılan bir anahtardır. Bir mesajın bir exchange’e gönderilmesi ve ardından bir veya daha fazla kuyruğa iletilmesi için bu anahtarlar kullanılır. Belirttiğimiz exchange typler’ın ikisinde bu key’ler kullanılmaktadır. (Direct ve topic exchange)



