Exchange
-umtshintshi okanye indawo yokutshintshiselana. Imiyalezo ithunyelwa kuyo. Exchange
ihambisa umyalezo kumgca omnye okanye ngaphezulu. Yena Ihambisa imiyalezo emgceni isekelwe kumakhonkco adaliweyo (bindings
) phakathi kwayo kunye nomgca.
Exchange
ayikho exchange
luluhlu (ikhonkco kwimodyuli enekhowudi apho umgaqo womgaqo ukhoyo) kwisiseko sedata esilungisiweyo.
Uluhlu lomxholo
UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP kunye neRPC UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano - UmvundlaMQ. Isiqendu 3. Ukuqonda iMigcele kunye nezibophelelo
- UmvundlaMQ. Icandelo 4. Ukuqonda ukuba yintoni imiyalezo kunye nezakhelo
- UmvundlaMQ. Icandelo 5: Upapasho loMyalezo kunye nokuSetyenziswa kokuSebenza
- UmvundlaMQ. Icandelo 6. Uphononongo lweemodyuli zeManyano kunye neMihlaba
- UmvundlaMQ. Icandelo 7. Iinkcukacha malunga noQhagamshelwano kunye neChanel
- UmvundlaMQ. Icandelo 8. RabbitMQ kwi.NET
- UmvundlaMQ. Icandelo 9. Ukubeka iliso
Utshintshiselwano ngokuthe ngqo
Direct exchange
- isetyenziswe xa kuyimfuneko hambisa umyalezo kwimigca ethile. Umyalezo upapashwa kutshintshiselwano ngento ethile iqhosha lendlela kwaye ingena kuyo yonke imigca edityaniswe nalo mtshintshi ngeqhosha elifanayo lendlela. Iqhosha lendlela yintambo. Ukuthelekisa kufunyanwa kusetyenziswa ukujonga ukulingana.
Umboniso womzobo wokuqukuqela komyalezo:
В rabbitmq
kukho ingcamango umtshintshisi ongagqibekanga. le direct exchange
akho gama. Ukuba utshintshiselwano olungagqibekanga lusetyenzisiwe, ngoko ke umyalezo uzakuthunyelwa kumgca onegama elilingana ne iqhosha lokuthumela umyalezo.
Utshintshiselwano ngesihloko
Topic exchange
- ezifanayo direct exchange
yenza indlela ekhethiweyo ngokuthelekisa iqhosha lendlela. Kodwa, kule meko, isitshixo sinikwe ngokwe template. Xa usenza itemplate, sebenzisa 0
okanye amagama amaninzi (oonobumba AZ
и az
kunye namanani 0-9
), yahlulwe lichaphaza, kunye neesimboli *
и #
.
*
- inokutshintshwa ngokuthe ngqo1
igama#
- inokutshintshwa0
okanye amagama amaninzi
Umboniso womzobo wokuqukuqela komyalezo:
Ukuqala kwinguqulelo RabbitMQ 2.4.0
umgaqo-nkqubo we topic exchange
waqala ukusebenza de 145
amaxesha ngokukhawuleza. Oku bakufezekise ngokuzisa indlela yokufundisa a.b.c
, a.*.b.c
, a.#.c
и b.b.c
iya kumelwa ngolu lwakhiwo lulandelayo:
Ukuthelekisa ipateni kukhangelwa ukusuka kwingcambu ukuya phezulu ukuya ezantsi.
Izixhobo:
- ukusetyenziswa kwesi sitshintshisi kunokuba ukhetho olulungileyo kuphuhliso olunokwenzeka lwexesha elizayo lwesicelo, ngokuba iitemplates zinokuhlala zilungiswa ukuze umyalezo upapashwe ngokufanayo
direct exchange
okanyefanout exchange
- iitemplates ezisebenzisayo
*
ngokukhawuleza okukhulukuneetemplates ezisebenzisayo#
. topic exchange
Kancincanadirect exchange
Fanout Exchange
Fanout exchange
- yonke imiyalezo ihanjiswa kuyo yonke imigca nokuba iqhosha lendlela lichaziwe kumyalezo.
Izixhobo:
RabbitMQ
ayisebenzi ngezitshixo zendlela kunye neetemplates enefuthe elihle kwimveliso. Le yeyona ikhawulezayoexchange
;- bonke abathengi kufuneka bakwazi ukucubungula yonke imiyalezo;
Umboniso womzobo wokuqukuqela komyalezo:
Utshintshiselwano lwezihloko
Headers exchange
- isalathisa imiyalezo kwimigca ehambelanayo esekelwe kuthelekiso lwezibini ze (isitshixo, ixabiso) headers
izibophelelo kunye neempawu zomyalezo ezifanayo. headers
ngu Dictionary<ключ, значение>
.
Ukuba wongeza iqhosha elikhethekileyo kwisichazi-magama x-match
ngentsingiselo any
, ngoko umyalezo uhanjiswa ngendlela ukuba izibini (isitshixo, ixabiso) zihambelana ngokuyinxenye. Le ndlela yokuziphatha iyafana nomsebenzisi or
.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
Isitshixo esihlala sihleli x-match
iqulathe ixabiso all
. Oku kuthetha ukuba umyalezo uhanjiswa xa izibini (isitshixo, ixabiso) zihambelana ngokupheleleyo. Le ndlela yokuziphatha iyafana nomsebenzisi and
.
Umboniso womzobo wokuqukuqela komyalezo:
Izixhobo:
- ukuba bhetyebhetye okongeziweyo
- umphezulu wobalo olongezelelweyo. Zonke izibini (isitshixo, ixabiso) lophawu loyelelwano
headers
kufuneka ihlelwe ngegama eliphambili phambi kokubala amaxabiso omzila womyalezo. Icotha kunezinye iintlobo zotshintshiselwano.
Utshintshiselwano lweHashing olungqinelanayo
Lo mtshintshi RabbitMQ
.
Consistent-hashing exchange
(i-hash-consistent exchange) - isetyenziswa xa kukho imigca emininzi enokuba ngabamkeli bomyalezo kwaye xa ufuna ukulayisha ibhalansi phakathi kwabo. Umyalezo unxulunyaniswa nomgca ngokobunzima (ixabiso lomtya olunemiqathango ukusuka 0 - n
).
Ubunzima obulinganayo bemigca - bubonisa ukuba umgca ngamnye uya kufumana malunga nesixa esifanayo imiyalezo (umyalezo ngamnye uya kubekwa kumgca omnye kuphela). Akukho siqinisekiso sipheleleyo sokusasazwa okufanayo kwemiyalezo.
Umboniso womzobo wokuqukuqela komyalezo:
Hash
ibalwe ngokusekwe kwiqhosha lendlela okanye kwipropathi headers
imiyalezo. Ukuba yonke imiyalezo epapashiweyo inezitshixo zomzila ezahlukeneyo, okanye headers
, ngoko ulwabiwo luya kwenzeka ngobunzima. Kungenjalo, kuya kusetyenziswa isitshixo somzila, okanye headers
.
Kufuneka incede xa umthamo wabathengi ufuna ukukhula phezulu kunesisombululo esinabathengi abaninzi abasebenzisa umgca omnye.
Ukudibanisa abatshintshisi (E2E)
Ukuziphatha kwabo bonke abatshintshisi kunokudibaniswa ngokusebenzisa unxibelelwano Utshintshiselwano-kuya-Utshintshiselwano (ukudibanisa abatshintshisi akubandakanywanga kwinkcazo AMQP
. Olu lulwandiso lweprotocol ukusuka kwicala RabbitMQ
).
Umboniso womzobo wokuqukuqela komyalezo:
Ngeendleko ze E2E
singafumana ulungelelwaniso olunokala olufanelekileyo oluhlangabezana neemfuno zangoku nezikhulayo.
Yenza Utshintshiselwano
Umtshintshi wenziwa usebenzisa i-synchronous RPC
isicelo kumncedisi. Isicelo senziwa kusetyenziswa indlela Exchange.Declare
ebizwa ngeeparamitha:
- igama lomtshintshi
- uhlobo lomtshintshi
- ezinye iinketho
Umzekelo wendalo exchange
ngo kunceda
//...
channel.ExchangeDeclare(
exchange: "my_exchange",
type: "direct",
durable: "false",
autoDelete: "false",
arguments: null
);
//...
exchange
-igama lomtshintshi esifuna ukuwenza. Igama kufuneka lohluketype
- uhlobo lotshintshiselwanodurable
- ukuba ifakiwetrue
, ngokoexchange
iya kuhlala ihleli. Iza kugcinwa kwidiski kwaye iya kukwazi ukusinda kumncedisi/umthengisi uqalise kwakhona. Ukuba ixabisofalse
, ngokoexchange
yeyexeshana kwaye iza kucinywa xa umncedisi/umthengisi eqalwa ngokutshaautoDelete
- ukucima ngokuzenzekelayo.Exchange
iya kucinywa xa yonke imigca ehambelana nayo icinyiwearguments
ziingxoxo ozikhethelayo. Amaxesha amaninzi, ngokusebenzisa iingxoxo ezibekiweyoalternative exchange
(umtshintshi ongomnye). Ukuba umyalezo awukwazi ukugqitha kwindlela yoqobo, ungathunyelwa kwenye utshintshiselwano ukuze uhanjiswe kwindlela eyahlukileyo.
Ukuba indalo exchange
mhlawumbi, ngoko umncedisi uzakuthumela umxhasi ungqamaniso RPC
mpendulo Exchange.DeclareOk
. Ukuba indalo akunakwenzeka (kwabakho ukwaliwa kwesi sicelo Exchange.Declare
), emva koko ijelo liya kuvala umncedisi usebenzisa umyalelo ongahambelaniyo Channel.Close
kwaye umxhasi uya kufumana okwahlukileyo
Umtshintshi kufuneka enziwe ngaphambi kokuthumela imiyalezo. Ukuba upapasha umyalezo komnye umtshintshi ongekhoyo - RabbitMQ
izoyisusa ngokuthula.
Yenza i-GUI yoTshintsho
Yiya kwindawo yolawulo RabbitMQ
phantsi komsebenzisi guest
(igama lomsebenzisi: guest
kunye negama lokugqitha: guest
). Nceda uqaphele ukuba umsebenzisi guest
ingaqhagamshela kuphela kwihostela yasekhaya. Ngoku masiye kwithebhu Exchanges
kwaye ucofe ku Add a new exchange
. Gcwalisa iimpawu:
Uninzi lweepropati zichazwe ngasentla. Apha siqaphela ukuba ukuba sibeka Internal
, ke utshintshiselwano lunokusetyenziswa kuphela E2E
. Producer
ayizukwazi ukuthumela imiyalezo kutshintshiselwano olunjalo.
isiphelo
Xa uphuhlisa inkqubo, kulungele ukuchaza i-topology
Ukuba kwigrafu eyakhiweyo kukho iseti enesiphelo izitshixo zendlela, ke, kufanelekile ukujonga ngakwiqela fanout exchange
, eziyi-1:1 ehambelana neqhosha lendlela. Khumbula ukuba fanout exchange
eyona ikhawulezayo.
Ukuba inani leendlela ithande ukungapheli, kufanelekile ukunikela ingqalelo topic exchange
okanye, ukuba ithempleyithi ayifunwa, ngoko ungakhetha direct exchnge
, ngokuba uyakhawuleza topic exchange
.
Iintlobo ezahlukeneyo exchange
kufuneka ikuncede ufumane echanekileyo. uqwalaselo olunokwehla, ehlangabezana neemfuno zangoku kunye nezikhulayo zenkqubo.
Inani le exchange
kwaye imigca kufuneka ibencinci xa kuthelekiswa nenani leendlela.
Kwinqaku elilandelayo siza kuqalisa ukuqonda iMigcele kunye nezibophelelo ngokweenkcukacha ezithe vetshe.
iimbekiselo
umthombo: www.habr.com