RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Exchange - beddelka ama barta sarrifka. Farriimaha waa loo diraa Exchange qaybiya fariinta hal ama ka badan oo saf ah. Isaga Jidadka fariimaha safka ku salaysan xiriiriyeyaasha la abuuray (bindings) iyada iyo safka dhexdooda.

Exchange ma ahan Habka Erlang. Sababaha scalability exchange waa xadhig (ku xidhidh moduleka leh koodka halka uu ku yaallo macquulka dariiqa) ee ku dhex jira kaydka xogta mnesia. 1 kun sariflayaasha ayaa cuni doona kaliya 1MB ee xusuusta.

Tusmada

  • RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP iyo RPC
  • RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga
  • RabbitMQ. Qaybta 3. Fahamka safafka iyo xidhidhiyaha
  • RabbitMQ. Qeybta 4. Wax ka qabashada waxa ay yihiin fariimaha iyo xirmooyinka
  • RabbitMQ. Qaybta 5: Daabacaadda iyo Isticmaalka Farriinta Waxqabadka
  • RabbitMQ. Qaybta 6. Dulmar guud oo ku saabsan Moduleska Federaalka iyo Majarafada
  • RabbitMQ. Qeybta 7. Faahfaahinta ku saabsan Xiriirinta iyo Chanel
  • RabbitMQ. Qaybta 8. RabbitMQ gudaha .NET
  • RabbitMQ. Qaybta 9. Korjoogteynta

Isdhaafsiga Tooska ah

Direct exchange - la isticmaalo marka loo baahdo gaadhsii fariinta safafka gaarka ah. Farriinta waxaa lagu daabacay sariflaha oo leh gaar ah furaha dariiqa wuxuuna galayaa dhammaan safafka ku xidhan sariflahan oo wata furaha dariiqa isku midka ah. Furaha marinku waa xadhig. Isbarbardhigga waxaa lagu sameeyaa iyadoo la isticmaalayo hubinta xadhkaha sinnaanta.

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

В rabbitmq waxaa jira fikrad beddelka caadiga ah. Waa direct exchange magac la'aan. Haddii beddelka caadiga ah la isticmaalo, markaa farriinta waxaa loo rogi doonaa saf leh magac la mid ah furaha habaynta fariinta.

Mawduuca Isweydaarsiga

Topic exchange – la mid ah direct exchange waxa uu suurtageliyaa dariiqa xulashada isagoo isbarbar dhigaya furaha dariiqa. Laakiin, kiiskan, furaha ayaa la bixiyaa qaab-dhismeedka. Markaad abuureyso template, isticmaal 0 ama erayo badan ( xarfo AZ и az iyo tirooyin 0-9), oo ay kala soocaan dhibic, iyo sidoo kale calaamado * и #.

  • * - si sax ah ayaa loogu beddeli karaa 1 ereyga
  • # - waxaa lagu bedeli karaa 0 ama erayo badan

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Laga bilaabo nooca RabbitMQ 2.4.0 dariiqa algorithm ee topic exchange shaqada bilaabay ilaa 145 jeer dhakhso badan. Waxay tan ku gaadheen hirgelinta habka isku day hirgelinta, taas oo tusinaysa matalaadda moodooyinka sida qaab-dhismeedka geedka. Tusaale ahaan qaab-dhismeedka a.b.c, a.*.b.c, a.#.c и b.b.c waxaa matali doona qaabka soo socda:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Is-waafajinta qaabka waxa la raadiyaa laga bilaabo xididka oo kor ilaa hoos laga soo bilaabo.

Features:

  • isticmaalka isweydaarsigan wuxuu noqon karaa doorasho wanaagsan ee suurtogalka ah horumarinta app mustaqbalka, sababtoo ah Hababka had iyo jeer waa la habeyn karaa si fariinta loo daabaco si isku mid ah direct exchange ama fanout exchange
  • templates in la isticmaalo * aad uga dhakhso badanmarka loo eego qaababka isticmaala #.
  • topic exchange gaabis ah direct exchange

Isweydaarsiga Fanout

Fanout exchange - dhammaan fariimaha waxaa la geeyaa dhammaan safafka xitaa haddii furaha dariiqa lagu qeexo fariinta.

Features:

  • RabbitMQ kuma shaqeeyo furayaasha jiheynta iyo qaab-dhismeedka taasoo saameyn togan ku leh waxqabadka. Tani waa kan ugu dhakhsaha badan exchange;
  • dhammaan macaamiishu waa inay awoodaan inay farsameeyaan dhammaan fariimaha;

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Isdhaafsiga Madaxyada

Headers exchange - wuxuu farriimaha ku toosiyaa safafka la xidhiidha iyadoo lagu saleynayo isbarbardhigga lammaanaha (furaha, qiimaha) guryaha headers ku xidhnaanta iyo hantida fariinta la midka ah. headers waa a Dictionary<ключ, значение>.

Haddii aad furaha gaarka ah ku darto qaamuuska x-match macne leh any, dabadeed fariinta waa la rujinayaa haddii lammaanuhu (furaha, qiimaha) qayb ahaan iswaafaqaan. Dabeecaddani waxay la mid tahay hawl-wadeenka or.

var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");

Furaha caadiga ah x-match ka kooban yahay qiimo all. Tani waxay ka dhigan tahay in fariinta la leexiyo marka lammaanuhu (furaha, qiimaha) ay si buuxda u siman yihiin. Dabeecaddani waxay la mid tahay hawl-wadeenka and.

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Features:

  • dabacsanaan dheeraad ah
  • korka xisaabinta dheeraad ah. Dhammaan lamaanaha (furaha, qiimaha) ee sifada headers waa in lagu kala soocaa magaca muhiimka ah ka hor inta aan la xisaabin qiimaha jiheynta fariinta. Ka gaabis ka badan noocyada kale ee wax-isweydaarsiga.

Isweydaarsiga Hashing Joogta ah

Sarrifleyaashan ayaa ah plugin и aan la dhisin в RabbitMQ.

Consistent-hashing exchange (hash-consistent exchange) - waxaa la adeegsadaa marka ay jiraan safaf badan oo ah kuwa heli kara fariinta iyo marka aad u baahan tahay inaad ku shubto dheelitirnaanta dhexdooda. Farriinta waxay la xidhiidhaa safka miisaan ahaan (qiimaha xadhig shuruudaysan oo ka yimid 0 - n).

Miisaanka u dhigma ee safafka - waxay muujineysaa in saf kasta uu heli doono qiyaas isku mid ah fariimaha (farriin kasta waxa la gelin doonaa saf keliya). Ma jiro dammaanad dhammaystiran oo qaybinta fariimaha isku mid ah.

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Hash lagu xisaabiyay iyadoo lagu salaynayo furaha dariiqa ama hantida headers fariimaha. Haddii dhammaan fariimaha la daabacay ay lahaayeen furayaal kala duwan, ama headers, ka dibna qaybintu waxay ku dhici doontaa miisaan. Haddii kale, furaha dariiqa ayaa la isticmaali doonaa, ama headers.

Waa in ay caawisaa marka wax soo saarka macaamiishu u baahan yihiin in ay ka koraan si ka sarreeya xalka iyada oo macaamiil badan ay isticmaalayaan saf isku mid ah.

Isku darka sariflayaasha (E2E)

Dhaqanka dhammaan wax-is-weydaarsiga waa la isku dari karaa iyadoo la adeegsanayo isgaarsiinta Wax-is-beddelka-is-beddelka (isku darka beddelayaasha kuma jiraan qeexitaanka AMQP. Tani waa kordhinta borotokoolka dhinaca RabbitMQ).

Matalaadda sawirka socodka fariinta:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Kharashka E2E waxaan heli karnaa qaabeynta saxda ah ee la miisaami karo oo buuxisa shuruudaha hadda iyo kuwa sii kordhaya labadaba.

Samee beddelka

Sarriflaha waxa la abuuraa iyadoo la isticmaalayo iskuxir RPC codsiga server-ka. Codsiga waxaa la sameeyaa iyadoo la isticmaalayo habka Exchange.Declare, oo loo yaqaan cabbiro:

  • magaca beddelka
  • nooca beddelka
  • fursadaha kale

Tusaalaha abuurista exchange iyadoo gacan ka heleysa RabbitMQ.Client:

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

  • exchange - magaca beddelka ee aan rabno inaan abuurno. Magacu waa inuu ahaado mid gaar ah
  • type - nooca sarrifka ah
  • durable - haddii la rakibo true, ka dibna exchange noqon doona joogto ah. Waxa lagu kaydin doonaa saxanka waxana ay awoodi doontaa in ay ka badbaado server/dilaal dib u bilaabo. Haddii qiimaha false, ka dibna exchange waa ku meel gaadh waxaana meesha laga saarayaa marka serfarka/dalaaliyaha dib loo bilaabo
  • autoDelete - Tirtir toos ah Exchange waa la tirtiri doonaa marka dhammaan safafka la xidhiidha la tirtiro
  • arguments waa doodo ikhtiyaari ah. Inta badan, iyada oo loo marayo doodaha la dhigay alternative exchange (beddelka beddelka). Haddii fariintu aysan mari karin dariiqii asalka ahaa, waxaa loo diri karaa beddelaad kale si loogu maro waddo kale.

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Hadday abuurto exchange suurtagal ahaan, ka dibna server-ku wuxuu u soo diri doonaa macmiilka isku mid ah RPC jawaab Exchange.DeclareOk. Hadday abuurto waa wax aan macquul ahayn (waxaa jirtay diidmo codsiga Exchange.Declare), ka dibna kanaalka wuu xirmi doonaa server isticmaalaya amar asynchronous ah Channel.Close macmiilkuna wuxuu heli doonaa ka reebis OperationInterruptedException, kaas oo ka koobnaan doona koodka qaladka iyo sharaxaadiisa.

Sarrifle waa in la abuuraa ka hor inta aan la dhejin. Haddii aad fariin u daabacdo qaar ka mid ah sariflayaasha aan jirin - RabbitMQ aamusnaan ka saar.

Abuur beddelka GUI

Tag gudiga maamulka RabbitMQ hoos isticmaalaha guest (username: guest iyo erayga sirta ah: guest). Fadlan la soco in isticmaaluhu guest Waxa kaliya oo ay ku xidhi karaan localhost Hadda aan tagno tab Exchanges oo guji Add a new exchange. Buuxi guryaha:

RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga

Inta badan guryaha ayaa lagu tilmaamay kor. Halkan waxaan ku ogaanay in haddii aan dhigay Internal, ka dibna sarifka kaliya ayaa loo isticmaali karaa E2E. Producer ma awoodi doonaan inay farriimaha u diraan isweydaarsiga noocaas ah.

gunaanad

Marka la samaynayo nidaam, way ku habboon tahay in la qeexo topology-ga habayn iyadoo la isticmaalayo garaaf. Laakiin ka hor intaadan bilaabin dhisidda garaaf, waxaa habboon in la muujiyo waddooyinka leh taraafikada sare, sababtoo ah. waxay u baahan yihiin wax soo saarka sare (waxqabad). Marka xigta, waxaad kala saari kartaa taraafikada. Ka dibna bilow dhisidda.

Haddii garaafka la dhisay uu jiro go'an xaddidan furayaasha jiheynta, markaas, waxaa habboon in dhinacyo badan loo eego fanout exchange, kuwaas oo 1:1 la xidhiidha furaha dariiqa. Xusuusnow taas fanout exchange ugu dhaqsiyaha badan.

Haddii tirada waddooyinka u janjeera in aan dhammaadka lahayn, waxaa mudan in fiiro gaar ah loo yeesho topic exchange ama, haddii template aan loo baahnayn, markaas waxaad dooran kartaa direct exchnge, sababtoo ah wuu dheereeyaa topic exchange.

Isku darka kala duwan exchange waa inuu kaa caawiyaa inaad hesho midka saxda ah. qaabeynta scalable, kaas oo buuxiya shuruudaha nidaamka hadda jira iyo kuwa koraya labadaba.

Tirada exchange safafkuna waa inuu yaraadaa marka loo eego tirada wadooyinka.

Maqaalka soo socda, waxaan bilaabi doonaa inaan wax badan ka fahanno safafka iyo xirmooyinka.

tixraacyada

Source: www.habr.com

Add a comment