Uvod: V RabbitMQ Exchange sprejme vsa sporočila, ki jih pošljejo proizvajalci, nato pa jih posreduje v Queue za shranjevanje po posebni politiki RabbitMQ ponuja štiri vrste izmenjav: fanout, direktno, tematsko in glavno Način z glavo se v praksi manj uporablja, ta članek pa primerja le prve tri načine.
1. Neposredna izmenjava
Vsa sporočila, poslana Direct Exchange, se posredujejo v vrsto, določeno v RouteKey.
1. Na splošno lahko uporabite Exchange, ki je priložen rabbitMQ:" (ime Exchange je prazen niz, v nadaljevanju imenovan privzeti Exchange).
2. V tem načinu ni potrebe po izvajanju nobenih vezavnih operacij na Exchange
3. Za sporočanje je potreben "RouteKey", ki ga lahko preprosto razumemo kot ime vrste, kamor je treba poslati podatke.
4. Če ime vrste, določeno v RouteKey, ne obstaja v vhostu, se sporočilo zavrže.
2. Izmenjava Fanout
Vsa sporočila, poslana na Fanout Exchange, se posredujejo vsem vrstam, vezanim na to izmenjavo.
1. Lahko ga razumemo kot vzorec usmerjevalne tabele
2. Ta način ne zahteva RouteKey
3. Ta način zahteva, da se Exchange vnaprej veže na čakalno vrsto, ena Exchange lahko veže več vrst, ena pa je lahko vezana na več izmenjav.
4. Če borza, ki je prejela sporočilo, ni vezana na nobeno vrsto, se sporočilo zavrže.
3. Izmenjava tem
Vsa sporočila, poslana na Topic Exchange, se posredujejo vsem vrstam, ki jih zanimajo teme, določene v RouteKey
1. Ta vzorec je bolj zapleten, preprosto povedano, vsaka vrsta ima svojo temo skrbi, vsa sporočila imajo "naslov" (RouteKey), Exchange pa bo sporočilo posredoval vsem vrstam, ki se lahko okvirno ujemajo s RouteKey zadeve.
2. Ta način zahteva RouteKey, morda vnaprej vezan na Exchange in Queue.
3. Pri vezavi navedite temo, ki je vrsti pomembna, na primer "#.log.#", da označite, da vrsta skrbi za vsa sporočila, povezana z dnevniki (sporočilo s RouteKey "MQ.log.error" bo posredovano vrsti).
4. "#" pomeni 0 ali več ključnih besed, "" pa eno ključno besedo. Na primer, "log." Lahko se ujema z "log.warn", vendar ne more ujeti "log.warn.timeout"; A "log.#" se ujema z zgoraj omenjenim.
5. Podobno, če Exchange ne najde vrste, ki ustreza RouteKey, bo to sporočilo zavrgel.
|