RabbitMQ kullanım sürecinde, bazı iş senaryolarında ardışık tüketimi sağlamamız gerekebilir. Örneğin, veri ekleme, değiştirme ve silme işlemlerini gerçekleştirmek için üç mesajın oluşturulduğu bir iş senaryosunda, tüketim sırası garanti edilmezse, yürütme sırası silme, değiştirme, ekleme şeklinde bozulabilir.

Aşağıda gösterildiği gibi:

RabbitMQ'da mesaj sıralaması konusunda üç yönden düşünülmesi gereklidir: mesaj gönderme sırası, kuyruktaki mesajların sırası ve mesaj tüketim sırası.

Mesaj Gönderme Sırası

Çoğu işletme için mesaj gönderici tarafındaki iletim sırası sıkı bir şekilde gerekli değildir. İlk mesajı kimin gönderdiği önemli değildir. Eğer bir işletme mesajların sırayla gönderilmesini gerektiriyorsa, bu demek olur ki yalnızca genel kilitleme ile bir mesajın aynı anda gönderilebileceği ve mesajların eş zamanlı olarak gönderilemeyeceği anlamına gelir.

Kuyruktaki Mesajların Sırası

RabbitMQ'da mesajlar nihayetinde bir kuyrukta depolanır. Aynı kuyruktaki mesajlar, genellikle geliş sırasına göre sıralanır ve bu RabbitMQ tarafından garanti edilir ve genellikle geliştiriciler için endişe kaynağı olmamalıdır.

Not: Farklı kuyruklardaki mesajların sırası garanti edilmez. Örneğin, bir tren istasyonuna girdiğinizde, üç kuyruktan birine katılırsanız, farklı kuyruklar arasında istasyona giriş sırası garanti edilemez.

Mesaj Tüketim Sırası

Mesaj sıralamasını nasıl garanti altına alacağımızı tartışırken genellikle, tüketicilerin mesajları nasıl tükettikleri sırasından bahsediyoruz. Aynı mesaj kuyruğundan birden fazla tüketici tarafından mesajların tüketildiği senaryolarda, genellikle mesaj sıralaması garanti altına alınamaz. Açılış diyagramında belirtildiği gibi, mesaj kuyruğundaki mesajlar sıralı olsa da, birden fazla tüketici eş zamanlı olarak mesaj tüketirse, mesajların alınma hızı, iş mantığının yürütme hızı ve olası yürütme istisnaları tümü tutarsız mesaj sıralamasına neden olabilir.

Örneğin: Mesajlar A, B ve C sırayla kuyruğa girer. Tüketici A1 mesajı A'yı alır, tüketici B1 mesajı B'yi alır. Ancak eğer tüketici B1 daha hızlı çalışırsa, tüketici A1'den önce tamamlayabilir veya tüketici A1 bir hata ile karşılaşırsa, her iki senaryo da tutarsız mesaj sıralamasına neden olabilir.

Ardışık tüketim probleminin tipik çözümü, bir kuyruğun yalnızca bir tüketiciye sahip olmasıdır Bu şekilde, mesajlar sırayla birer birer işlenebilir. Dezavantajı ise, eş zamanlı yetenek azalır ve eş zamanlı mesaj tüketimi mümkün olmaz. Bu bir ticaret-off'tur.

Not: İş sıralı tüketim isterse ve artan eş zamanlılık isterse, yaygın bir yaklaşım birden fazla kuyruğun etkinleştirilmesidir. İşletme, kurallara dayalı olarak farklı kuyruklara mesajları dağıtabilir, böylece eş zamanlılık seviyesini artırabilir. Örneğin, bir e-ticaret sipariş senaryosunda, aynı kullanıcı için sipariş mesajlarının sıralamasını sağlamak yeterlidir. Farklı kullanıcılara ait mesajlar farklı kuyruklara yönlendirilebilir.