UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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 Inkqubo ye-Erlang. Ngenxa yezizathu scalability exchange luluhlu (ikhonkco kwimodyuli enekhowudi apho umgaqo womgaqo ukhoyo) kwisiseko sedata esilungisiweyo. mnesia. Iwaka eli-1 labatshintshiselwano liya kudla kuphela i-1MB yememori.

Uluhlu lomxholo

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:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

В 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 ngqo 1 igama
  • # - inokutshintshwa 0 okanye amagama amaninzi

Umboniso womzobo wokuqukuqela komyalezo:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

Ukuqala kwinguqulelo RabbitMQ 2.4.0 umgaqo-nkqubo we topic exchange waqala ukusebenza de 145 amaxesha ngokukhawuleza. Oku bakufezekise ngokuzisa indlela yokufundisa zama ukuphunyezwa, ebandakanya ukumela iipateni njengesakhiwo somthi. Umzekelo iitemplates a.b.c, a.*.b.c, a.#.c и b.b.c iya kumelwa ngolu lwakhiwo lulandelayo:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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 okanye fanout exchange
  • iitemplates ezisebenzisayo * ngokukhawuleza okukhulukuneetemplates ezisebenzisayo #.
  • topic exchange Kancincana direct 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 ikhawulezayo exchange;
  • bonke abathengi kufuneka bakwazi ukucubungula yonke imiyalezo;

Umboniso womzobo wokuqukuqela komyalezo:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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 Faka iplagi и ayakhiwanga ngaphakathi в 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:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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.Declareebizwa ngeeparamitha:

  • igama lomtshintshi
  • uhlobo lomtshintshi
  • ezinye iinketho

Umzekelo wendalo exchange ngo kunceda RabbitMQ.Client:

//...
channel.ExchangeDeclare(
    exchange: "my_exchange",
    type: "direct",
    durable: "false",
    autoDelete: "false",
    arguments: null
);
//...

  • exchange -igama lomtshintshi esifuna ukuwenza. Igama kufuneka lohluke
  • type - uhlobo lotshintshiselwano
  • durable - ukuba ifakiwe true, ngoko exchange iya kuhlala ihleli. Iza kugcinwa kwidiski kwaye iya kukwazi ukusinda kumncedisi/umthengisi uqalise kwakhona. Ukuba ixabiso false, ngoko exchange yeyexeshana kwaye iza kucinywa xa umncedisi/umthengisi eqalwa ngokutsha
  • autoDelete - ukucima ngokuzenzekelayo. Exchange iya kucinywa xa yonke imigca ehambelana nayo icinyiwe
  • arguments ziingxoxo ozikhethelayo. Amaxesha amaninzi, ngokusebenzisa iingxoxo ezibekiweyo alternative exchange (umtshintshi ongomnye). Ukuba umyalezo awukwazi ukugqitha kwindlela yoqobo, ungathunyelwa kwenye utshintshiselwano ukuze uhanjiswe kwindlela eyahlukileyo.

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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 OperationInterruptedException, eya kuba nekhowudi yempazamo kunye nenkcazo yayo.

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:

UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano

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 indlela usebenzisa igrafu. Kodwa ngaphambi kokuba uqale ukwakha igrafu, kuyafaneleka ukugqamisa iindlela ezinomthamo omkhulu, kuba. bafuna umgangatho ophezulu (ukusebenza). Okulandelayo, ungahlela itrafikhi. Kwaye kuphela emva koko uqale ukwakha.

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

Yongeza izimvo