Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 8397|Odpoveď: 0

Úvod do troch výmenných režimov (fanout, priamy a tematický) v RabbitMQ

[Kopírovať odkaz]
Zverejnené 29. 3. 2018 14:30:45 | | | |
Zavedenie:
V RabbitMQ sú všetky správy odoslané producentmi akceptované Exchange, ktorý ich následne preposiela do Queue na uloženie podľa konkrétnej politiky
RabbitMQ ponúka štyri typy výmen: fanout, priamy, tematický a hlavičkový
Režim hlavičky sa v praxi používa menej a tento článok porovnáva len prvé tri režimy.

1. Priama výmena


Všetky správy odoslané do Direct Exchange sú preposielané do fronty špecifikovanej v RouteKey.

1. Vo všeobecnosti môžete použiť Exchange, ktorý je súčasťou rabbitMQ:" (názov Exchange je prázdny reťazec, ďalej len predvolený Exchange).

2. V tomto režime nie je potrebné vykonávať žiadne viazanie na Exchange

3. Na odosielanie správ je potrebný "RouteKey", ktorý možno jednoducho chápať ako názov fronty, do ktorej sa má odoslať.

4. Ak názov fronty špecifikovaný v RouteKey neexistuje vo vhoste, správa sa vyhodí.

2. Fanout Exchange


Všetky správy zaslané na Fanout Exchange sú preposielané všetkým frontám viazaným na túto výmenu.

1. Dá sa chápať ako vzor smerovacej tabuľky

2. Tento režim nevyžaduje RouteKey

3. Tento režim vyžaduje vopred viazanie Exchange na Queue, jeden Exchange môže viazať viacero frontov a jeden Front môže byť viazaný na viacero Exchange.

4. Ak Exchange, ktorý správu prijal, nie je viazaný na žiadnu frontu, správa sa zahodí.

3. Výmena tém


Všetky správy odoslané do Topic Exchange sú preposielané všetkým frontam, ktoré sa zaujímajú o témy špecifikované v RouteKey

1. Tento vzor je zložitejší, jednoducho povedané, každá fronta má svoju vlastnú tému záujmu, všetky správy majú "názov" (RouteKey) a Exchange prepošle správu všetkým frontám, ktoré môžu fuguele zodpovedať RouteKey danej témy.

2. Tento režim vyžaduje RouteKey, prípadne vopred viazaný Exchange and Queue.

3. Pri viazaní uveďte tému, na ktorej fronte záleží, napríklad "#.log.#", aby ste naznačili, že fronte záleží na všetkých správach súvisiacich s logami (správa s RouteKey "MQ.log.error" bude presmerovaná do fronty).

4. "#" znamená 0 alebo niekoľko kľúčových slov a "" znamená jedno kľúčové slovo. Napríklad "log." Môže zodpovedať "log.warn", ale nemôže zodpovedať "log.warn.timeout"; Ale "log.#" zodpovedá vyššie uvedenému.

5. Podobne, ak Exchange nenájde frontu, ktorá zodpovedá RouteKey, túto správu zahodí.




Predchádzajúci:Použite XPosed na obídenie silnej validácie SSL certifikátov Android
Budúci:.net/c# RabbitMQ odpojenie a opätovné pripojenie
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com