RabbitMQ, bir mesaj sırası (message queue) sistemidir ve farklı sistemler arasında iletişim kurmayı sağlar. RabbitMQ’nun farklı kullanım senaryolarına göre farklı topolojileri bulunmaktadır. İşte bazı temel RabbitMQ topolojileri:
- Direct Exchange (Doğrudan Değişim): Bu topolojide, mesajlar doğrudan belirli bir kuyruğa yönlendirilir. Mesajın gönderileceği kuyruk, mesajın taşıdığı yönlendirme anahtarına (routing key) bağlıdır. Bu topoloji genellikle tek bir tüketiciye yönlendirilmiş mesajları işlemek için kullanılır.
- Fanout Exchange (Yayın Değişimi): Bu topolojide, bir mesajı alan tüm kuyruklara mesajları yayınlamak için kullanılır. Yani, bir yayın değişimi aldığı mesajı direkt olarak bağlı olan tüm kuyruklara iletecektir. Bu, bir olayı birden çok tüketiciye iletmek veya bir tüketici grubuna mesaj göndermek için kullanışlıdır.
- Topic Exchange (Konu Değişimi): Bu topolojide, kuyrukları bir veya daha fazla anahtar kelimeye dayalı olarak yönlendirebilirsiniz. Mesajların yönlendirilmesi bir konu (topic) ile belirlenir ve kuyruklar belirli bir konu deseni (pattern) ile ilişkilendirilir. Örneğin, “haber.spor” konusuyla ilişkilendirilen bir kuyruk, “haber.spor.football” veya “haber.spor.basketball” gibi mesajları alır.
- Headers Exchange (Başlık Değişimi): Bu topolojide, mesajların içeriğine ve özelliklerine dayalı olarak kuyruklara yönlendirme yapılır. Mesajın başlıklarına eklenen anahtar/değer çiftleriyle kuyruklar ilişkilendirilir. Başlıkların eşleşmesine dayalı olarak mesajlar ilgili kuyruklara yönlendirilir.
- Dead Letter Exchange (Ölü Mektup Değişimi): Bu, işlenemeyen veya geçersiz mesajları yönlendirmek için kullanılan bir topolojidir. Bir mesaj işlenemediğinde veya belirli bir süre içinde bir kuyrukta beklediyse, bu mesaj ölü mektup değişimi aracılığıyla belirli bir ölü mektup kuyruğuna yönlendirilebilir.
Bu listede belirttiğim temel topolojiler dışında daha karmaşık ve özelleştirilmiş topolojiler de oluşturulabilir. Hangi topolojinin kullanılacağı, uygulamanızın gereksinimlerine, iş akışına ve iletişim senaryolarına bağlı olarak değişebilir.