RabbitMQ gibi Gelişmiş Message Queuing Protokolü ne zaman kullanılır? [kapalı]


45

Birisi bana, örneğin RabbitMQ gibi AMQP kullanmayı düşünmem gereken hangi durumlarda kullanabileceğimi açıklayabilir mi? Artıları ve eksileri nelerdir?


Yığın Taşması ile ilgili benzer bir soruya bazı iyi cevaplar var: JMS / mesaj kuyruklarının gerçek dünya kullanımı?
Gan

Feryat bağlantısını görüntüleyebilirsiniz. Geniş bir açıklaması vardır: stackoverflow.com/a/51377756/3073945
Md. Sajedul Karim

Yanıtlar:


25

Saniyede bir çok isteği kabul edebilecek bir web servisiniz olduğunu hayal edin. Ayrıca, birçoğu web servisinden gelen talepleri işleyen bir çok şey yapan bir muhasebe sisteminiz var.

Web hizmeti ile muhasebe sistemi arasında bir kuyruk koyarsanız, şunları yapabileceksiniz:

  • iki uygulama arasında daha az bağlantıya sahiptir, çünkü şimdi her iki uygulama da kuyruk yönetim sisteminin yapılandırma parametrelerini ve sıranın adını bilmek zorundadır. Burada yakalama, genellikle sıra yönetim sistemini taşımaktan başka bir sunucuya başka bir uygulamaya geçme olasılığınızın yüksek olmasıdır.
  • Kısa sürede çok fazla istekte bulunmanız durumunda, muhasebe sistemi yine de hepsini işleme koyabilecektir.
  • eğer sayısı gerçekten çok büyük olursa, bazı istekleri devam ettirmek

Elbette, uygulama sayınızın ikiden fazla olduğu ve aralarındaki iletişimi yönetmeniz gereken daha karmaşık durumlara sahip olabilirsiniz.


1
1) A, B'ye nasıl bağlanır, A'ya C'ye bağlanır ve C'ye bağlanır?
Charlie,

2) Neden sırayı muhasebe sistemine koymuyorsunuz? Neden ek yapılandırmaya ihtiyaç duyan yeni bir hareketli kara kutu parçası getirdiniz?
Charlie,

2
Soru 1 ile ilgili @ Charlie, cevabımı değiştirdim. Soru 2 hakkında, sırayı tam olarak muhasebe sistemine sokarak ne demek istiyorsunuz? Bir sıra veri yapısı kullanmak ister misiniz? Bu durumda, sürdürmek için yazmak için daha fazla kod olacaktır. Bir veritabanı tablosu kullanarak sırayı benzetmek ister misiniz? Yine bu tabloyu yönetmek için iyi bir kod yazmak zorunda kalacaksınız. Düşünmediğim bir şey mi var?
Виталий Олегович

Sıra 1 için cevapsız kaldım. Sıra web hizmetine yerleştirilirse veya sıra uygulama içine yerleştirilirse, bir bağlantı kalır. Ancak, sıra her ikisine de haricise, şimdi iki kez eşleştirmeye ve başarısızlık noktalarını yönetmek için% 50 daha fazla sisteme sahipsiniz. Bir üçüncü taraf kuyruğu seçildiyse, öğrenmek ve yapılandırmak için bu yeni pakete sahip olacaksınız ve muhtemelen kuyruğu genel amaçlı ve kullanışlı hale getirmek için eklenmiş olan özellikleri kullanmakla ilgilenmediğiniz sayısız özellikten yararlanabilirsiniz. kendinden çok daha fazla durum.
Charlie

@Charlie, muhtemelen birden fazla sistem arasında tek bir mesaj aracısı kullanılacaktı. Veya komisyoncu için tek bir vekil sunucu olacaktır. (Bizim durumumuzda, tüm sistemlerimiz için saniyede milyonlarca mesajı işleyebilen tek bir Mesajlaşma cihazı kullanıyoruz). Bu aslında daha büyük bir ayrıştırma oluşturur çünkü bir mesaj bir sistem tarafından üretilir ve ilgili herhangi bir sistem bu mesajı alabilir ve uygun bir mantık gerçekleştirebilir. Tek eşleşme kuyruğun kendisi için.
Michael Brown

16

Bir web servisi ile başka bir arka uç servisi arasında bir tampon sağlanmasına ek olarak, daha ileri senaryolar için mesaj sıraları kullanılabilir. Tavşan MQ (ve ayrıca MOM - Message Oriented Middleware olarak da adlandırılan diğer olgun Message Queue ürünleri), mesajları farklı kurallara göre yönlendirmek ve dağıtmak için yapılandırılabilir.

Örneğin, Pub-Sub yönlendirme tekniği, tek bir kaynağın mesaj göndermesini ve birçok dinleyicinin onu almasını sağlar. Bu, kullanıcıları yerdeki güncel tutmak için hisse senedi alım satım yazılımı tarafından kullanılır.

Ayrıca, çoğu MOM'un birden fazla dil ve platform için sdk'leri olması nedeniyle, farklı platformlarda yazılmış uygulamaları entegre etmek için kullanılabilir.

Bunlar, MOM'lar tarafından etkinleştirilen senaryolardan sadece birkaçıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.