Bevezetés: A RabbitMQ-ban a gyártók által beküldött összes üzenetet a Exchange elfogadja, majd továbbítja azokat a Queue-nak tárolásra egy adott szabályzat szerint. A RabbitMQ négyféle párbeszédet kínál: fanout, direct, topic és header A fejléc módot a gyakorlatban kevésbé használják, és ez a cikk csak az első három módot hasonlítja össze.
1. Közvetlen csere
A Direct Exchange-nek küldött üzenetek továbbításra kerülnek a RouteKey által megadott sorba.
1. Általánosságban használhatod a rabbitMQ hozzátartozó Exchange-et:" (a Exchange neve egy üres láncsor, ezutáni alapértelmezett Exchange-ként ismert).
2. Ebben a módban nincs szükség semmilyen kötési műveletre a Exchange-en
3. Az üzenetküldéshez "RouteKey" szükséges, amely egyszerűen érthető a küldendő sor neveként.
4. Ha a RouteKey-ben megadott sornév nem létezik a vhostban, az üzenet elmarad.
2. Fanout csere
A Fanout Exchange-hez küldött üzenetek továbbításra kerülnek az adott Exchange-hez kötött összes sorhoz.
1. Értelmezhető úgy, mint az útvonal-táblázat mintázata
2. Ez a mód nem igényel RouteKey-t
3. Ez a mód előre megköveteli az Exchange és Queue kötését, egy Exchange több sort is köthet össze, és egy Queue több Exchange-hez köthető.
4. Ha az üzenetet fogadó Exchange nincs kötve egyetlen Queue-hoz sem, az üzenet elmarad.
3. Témacsere
A Topic Exchange-hez küldött üzenetek továbbításra kerülnek minden olyan sorhoz, amely érdeklődik a RouteKey által megadott témákkal
1. Ez a minta egyszerűen összetettebb, minden sornak megvan a maga aggodalom tárgya, minden üzenetnek van "címe" (RouteKey), és az Exchange továbbítja az üzenetet minden olyan sorhoz, amely fugálisan egyezik az érintett téma RouteKey-ével.
2. Ez a mód RouteKey-t igényel, amely esetleg előre köti a Exchange és Queue rendszereket.
3. Kötéskor adj meg egy olyan témát, amely a sorba számára fontos, például "#.log.#"-t, hogy jelezze, hogy a sorban minden naplóhoz kapcsolódó üzenet érdekli (egy üzenet, amelynek RouteKey "MQ.log.error" szerepel, továbbítódik a sorhoz).
4. "#" 0 vagy több kulcsszót jelent, a "" pedig egy kulcsszót. Például: "napló." Egyezik a "log.warn" kifejezéssel, de nem egyezik a "log.warn.timeout"-tal; De a "log.#" megfelel a fentieknek.
5. Hasonlóképpen, ha az Exchange nem talál olyan sort, amely egyezik az RouteKey-vel, akkor ezt az üzenetet eldobja.
|