Mesaj göndermek için RabbitMQ kullanırken temelde alış verişler, sıralar ve bağlamalar var. Onların fikrini ve birbirleriyle nasıl ilişkilendiklerini anladım, ama neyi kimlerin belirlediğinden emin değilim.RabbitMQ: Değiş tokuşlar, kuyruklar ve bağlamalar - kim ne yapıyor?
Temel olarak, uygulamamda üç senaryo var.
Senaryo 1: Bir yayıncı, birkaç işçi ı ulaşmak istediğiniz ne
bir sıraya mesajları gönderir bir bileşenidir ve bu kuyrukta öğeleri işlemek birkaç işçi süreçler olacaktır işler. Bu bana göre oldukça kolay görünüyor. Kurulum aşağıdaki gibidir:
- Değişimi: 1 kuyruk
- Bağlama: bir mesajdır zaman kuyruk alışverişi
bağlıdır 'doğrudan'
Her şey dayanıklı olacaktır.
Peki kim neyi kurar? Bence:
- Üretici
- Üretici kuyruğunu oluşturur değişimi oluşturur (şu anda çalışan hiçbir işçinin süreçler olabileceği gibi ve orada hiçbir sıra eğer mesaj kaybedilecek durumdaki)
- Üretici bağlayıcı yapar değişimi
- Tüketiciler için sıranın sadece kuyrukta
Sağ dinlemek?
Senaryo 2: Tek yayıncı, birkaç aboneler, uçucu mesajlar
İkinci senaryo oldukça farklıdır. Temel olarak, her mesajın şu anda dinleyen her istemciye gönderildiği bir pub/alt senaryodur. Bir müşteri çevrimdışı duruma geçerse, artık mesaj almaz ve onun için herhangi bir yerde saklanmaz. Bağlanma her tüketici
- Değişim: türü 'fanout'
- Sırası ile 1 alışverişi Bu, aşağıdaki kurulum sağlar Her kuyruk değişimi için bağlı gereken
Peki kim neyi kurar?Bence:
- Üretici
- Tüketici kuyruğunu oluşturur değişimi oluşturur (kendi kuyruk olduğu gibi ve yapımcı mesajlar ilgilenen kim olursa olsun bilemez)
- Tüketici onun kuyruğunda için bağlayıcı oluşturur değişimi
- Tüketici onun kuyruğunda
Sağ dinler mi?
Senaryo 3: Bir tüketici çevrimdışı giderse Bir yayıncı, birkaç aboneler, dayanıklı mesajlar Temelde
senaryo 2 ile aynı
, ancak iletiler kayıp olmamalıdır. Bence bu hiçbir şeyi değiştirmemeli - değil mi?
Kurulum yapmak için kullanılabilecek üçüncü bir kişi var: bir dış yönetici. Daha fazla bilgi için bu yanıtı başka bir soruya bakın: http://stackoverflow.com/questions/6148381/rabbitmq-persistent-message-with-topic-echange/6155733#6155733 –
Bunu açık bir şekilde yazmadım, ancak sistem Harici bir yöneticiye ihtiyaç duymadan kendi kendini barındırabilir. –