Exchange
β indawo yokushintshisana noma indawo yokushintshisana. Imilayezo ithunyelwa kuyo. Exchange
ihambisa umlayezo kulayini owodwa noma ngaphezulu. Yena ithumela imilayezo kulayini ngokusekelwe ekuxhumaneni okudaliwe (bindings
) phakathi kwakhe nolayini.
Exchange
ayiyona exchange
- lona umugqa (isixhumanisi semojula enekhodi lapho umzila ulele khona) kusizindalwazi esakhelwe ngaphakathi
Uhlu lokuqukethwe
I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP kanye ne-RPC I-RabbitMQ. Ingxenye 2. Ukuqonda Ukuhwebelana - I-RabbitMQ. Ingxenye 3. Ukuqonda Imigqa Nezibopho
- I-RabbitMQ. Ingxenye 4. Ukuqonda ukuthi iyini imilayezo namafreyimu
- I-RabbitMQ. Ingxenye 5: Ukushicilelwa Komlayezo kanye Nokusebenza Kokusetshenziswa
- I-RabbitMQ. Ingxenye 6. Ukubuyekezwa kwe-Federation kanye namamojula weFosholo
- I-RabbitMQ. Ingxenye 7. Imininingwane mayelana Nokuxhumana kanye ne-Chanel
- I-RabbitMQ. Ingxenye 8. RabbitMQ in .NET
- I-RabbitMQ. Ingxenye 9. Ukuqapha
Ukuhwebelana Okuqondile
Direct exchange
- esetshenziswa lapho kudingeka hambisa umlayezo kolayini abathile. Umlayezo ushicilelwe ku-exchanger ngombhalo othize ukhiye womzila futhi ingena kuyo yonke imigqa exhunywe kulesi sishintshi ngokhiye womzila ofanayo. Ukhiye womzila uyiyunithi yezinhlamvu. Ukufanisa kutholwa kusetshenziswa ukuhlola izintambo zokulinganisa.
Ukumelwa okubonakalayo kokugeleza komlayezo:
Π rabbitmq
kukhona umqondo isishintshi esizenzakalelayo. Kuyinto direct exchange
alikho igama. Uma kusetshenziswa isishintshi esimisiwe, umlayezo uzohanjiswa emgqeni onegama elilingana ne ukhiye wokuthumela umlayezo.
Ukushintshana Kwesihloko
Topic exchange
- okufanayo direct exchange
inika amandla umzila okhethiwe ngokuqhathanisa ukhiye womzila. Kodwa, kulokhu, ukhiye unikezwa ngokwethempulethi. Lapho udala isifanekiso, sebenzisa 0
noma amagama amaningi (izinhlamvu AZ
ΠΈ az
kanye nezinombolo 0-9
), ehlukaniswe ichashazi, kanye nezimpawu *
ΠΈ #
.
*
- ingashintshwa ncamashi1
igama#
- ingashintshwa yi0
noma amagama amaningi
Ukumelwa okubonakalayo kokugeleza komlayezo:
Kusukela version RabbitMQ 2.4.0
i-algorithm yomzila we topic exchange
waqala ukusebenza kwaze kwaba 145
izikhathi ngokushesha. Lokhu bakuzuzile ngokwethula indlela yokwenza a.b.c
, a.*.b.c
, a.#.c
ΠΈ b.b.c
izomelwa yisakhiwo esilandelayo:
Ukusesha kokumatanisa iphethini kwenziwa kusukela empandeni kuqhubeke kusuka phezulu kuye phansi.
Izici:
- ukusetshenziswa kwalesi exchanger kungaba ukukhetha okuhle kwentuthuko yesikhathi esizayo yohlelo lokusebenza, ngoba izifanekiso zingahlala zenziwe ngendlela oyifisayo ukuze umlayezo ushicilelwe ngendlela efanayo
direct exchange
nomafanout exchange
- izifanekiso ezisetshenziswayo
*
ngokushesha okukhulukunezifanekiso ezisetshenziswayo#
. topic exchange
Kancanedirect exchange
I-Fanout Exchange
Fanout exchange
- yonke imilayezo ilethwa kuyo yonke imigqa noma ngabe ukhiye womzila ucacisiwe kumlayezo.
Izici:
RabbitMQ
ayisebenzi ngokhiye bomzila nezifanekiso okunomthelela omuhle ekukhiqizeni. Lokhu kuyashesha kakhuluexchange
;- bonke abathengi kufanele bakwazi ukucubungula yonke imilayezo;
Ukumelwa okubonakalayo kokugeleza komlayezo:
I-Header Exchange
Headers exchange
- ithumela imilayezo kolayini abahlotshaniswayo ngokusekelwe ekuqhathaniseni (ukhiye, inani) lamapheya ezakhiwo headers
izibopho kanye nezakhiwo zomlayezo ezifanayo. headers
kuyinto a Dictionary<ΠΊΠ»ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅>
.
Uma wengeza ukhiye okhethekile kusichazamazwi x-match
ngencazelo any
, bese umlayezo uyahanjiswa uma kukhona ukufana okuyingxenye kwamapheya (ukhiye, inani). Lokhu kuziphatha kuyafana nomsebenzisi or
.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
Ukhiye ozenzakalelayo x-match
iqukethe inani all
. Lokhu kusho ukuthi umlayezo uyahanjiswa uma amapheya (ukhiye, inani) afana ncamashi. Lokhu kuziphatha kuyafana nomsebenzisi and
.
Ukumelwa okubonakalayo kokugeleza komlayezo:
Izici:
- ukuguquguquka okwengeziwe
- i-overhead eyengeziwe yokubala. Wonke (ukhiye, inani) amapheya esibaluli
headers
kufanele ihlungwe ngegama elingukhiye ngaphambi kokuhlanganisa amanani omzila womlayezo. Ihamba kancane kunezinye izinhlobo zokushintshisana.
I-Consistent-Hashing Exchange
Lokhu exchanger kuyinto RabbitMQ
.
Consistent-hashing exchange
(ukushintshanisa nge-hashing engaguquki) - esetshenziswa uma kukhona imigqa eminingana okungenzeka kube abamukeli bomlayezo, nalapho udinga ukulinganisa umthwalo phakathi kwabo. Ukuxhumana komlayezo onomugqa kwenzeka ngesisindo (inani leyunithi yezinhlamvu enemibandela ukusuka 0 - n
).
Isisindo esilinganayo solayini - sibonisa ukuthi ulayini ngamunye uzotholwa cishe inani elifanayo imilayezo (umlayezo ngamunye uzofakwa kulayini owodwa kuphela). Asikho isiqinisekiso esiphelele sokusatshalaliswa okufanayo kwemiyalezo.
Ukumelwa okubonakalayo kokugeleza komlayezo:
Hash
kubalwe ngokusekelwe kukhiye womzila noma impahla headers
imiyalezo. Uma yonke imilayezo eshicilelwe inokhiye bomzila abahlukene noma headers
, khona-ke ukusatshalaliswa kuzokwenzeka ngesisindo. Uma kungenjalo, ukhiye womzila uzosetshenziswa noma headers
.
Kufanele isize lapho ukusetshenziswa komthengi kudinga ukukhula ngaphezu kwesixazululo esinabathengi abaningi abasebenzisa ulayini owodwa.
Ukuhlanganisa ama-exchangers (E2E)
Ukuziphatha kwabo bonke abashintshisana kungahlanganiswa kusetshenziswa ukuxhumana Ukushintshanisa-kuya-Kushintshisana (ukuhlanganisa ama-exchangers akufakiwe ekucacisweni AMQP
. Lesi isandiso sephrothokholi ukusuka ohlangothini RabbitMQ
).
Ukumelwa okubonakalayo kokugeleza komlayezo:
Ngezindleko ze E2E
singathola ukucushwa okulungile okungakala ukuze sihlangabezane nezimfuneko zamanje nezikhulayo.
Dala Ukuhwebelana
Ukwakhiwa kwe-exchanger kwenzeka kusetshenziswa i-synchronous RPC
isicelo kuseva. Isicelo senziwa kusetshenziswa indlela Exchange.Declare
ebizwa ngamapharamitha:
- igama lokushintshanisa
- uhlobo lokushintshanisa
- amanye amapharamitha
Isibonelo sendalo exchange
ngosizo
//...
channel.ExchangeDeclare(
exchange: "my_exchange",
type: "direct",
durable: "false",
autoDelete: "false",
arguments: null
);
//...
exchange
- igama lokushintshanisa esifuna ukukudala. Igama kumele lihluketype
- uhlobo lokushintshisanadurable
- uma ifakiwetrue
, khona-keexchange
kuzoba unomphela. Izogcinwa kudiski futhi ingasinda lapho iseva/umthengisi eqala kabusha. Uma inanifalse
, khona-keexchange
eyesikhashana futhi izosuswa uma iseva/umdayiseli iqalwa kabushaautoDelete
- ukususwa okuzenzakalelayo.Exchange
izosuswa uma yonke imigqa ehlotshaniswa nayo isusiwearguments
- izimpikiswano ozikhethela. Ngokuvamile, bacacisa ngokusebenzisa izimpikiswanoalternative exchange
(i-exchanger ehlukile). Uma umlayezo ungakwazi ukuhamba ngomzila wokuqala, ungathunyelwa kwenye i-exchanger ukuze uhanjiswe ngendlela ehlukile.
Uma indalo exchange
kungenzeka, bese iseva izothumela iklayenti ukuvumelanisa RPC
impendulo Exchange.DeclareOk
. Uma indalo akunakwenzeka (isicelo sinqatshiwe Exchange.Declare
), bese isiteshi sizovala iseva esebenzisa umyalo ongavumelanisiwe Channel.Close
futhi iklayenti lizothola okuhlukile
I-exchanger kufanele idalwe ngaphambi kokuthumela imilayezo. Uma ushicilela umlayezo komunye umshintshi ongekho - RabbitMQ
uzoyisusa buthule.
Ukudala Ukushintshana nge-GUI
Iya kuphaneli yomqondisi RabbitMQ
ngaphansi komsebenzisi guest
(igama lomsebenzisi: guest
kanye nephasiwedi: guest
). Sicela uqaphele ukuthi umsebenzisi guest
ingaxhuma kuphela kusuka ku-localhost. Manje ake siye kuthebhu Exchanges
bese uchofoza Add a new exchange
. Gcwalisa izakhiwo:
Iningi lezakhiwo lichazwe ngenhla. Lapha siphawula ukuthi uma sibeka Internal
, bese ukushintshanisa kungasetshenziswa kuphela E2E
. Producer
ngeke ikwazi ukuthumela imilayezo ekushintshisaneni okunjalo.
isiphetho
Lapho usungula uhlelo, kulula ukuchaza i-topology
Uma kugrafu eyakhiwe kukhona isethi elinganiselwe okhiye bomzila, khona-ke kufanelekile ukubheka kokuningi fanout exchange
, okungu-1:1 okuhlobene nokhiye womzila. Siyakukhumbula lokho fanout exchange
eshesha kakhulu.
Uma inani lemizila ijwayele ukungapheli, khona-ke kufanele unake topic exchange
noma, uma isifanekiso singadingeki, ungakhetha direct exchnge
, ngoba uyashesha topic exchange
.
Inhlanganisela ezahlukene exchange
kufanele ikusize uthole elungile ukucushwa okungaka, ehlangabezana nezidingo zesistimu zamanje nezikhulayo.
Inombolo exchange
futhi imigqa kufanele ibe mincane uma iqhathaniswa nenani lemizila.
Esihlokweni esilandelayo sizoqala ukuqonda Imigqa Nezibophezelo ngokuningiliziwe.
izithenjwa
Source: www.habr.com