RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Exchange - phapanyetsano kapa ntlha ea phapanyetsano. Melaetsa e romelloa ho eona. Exchange abela molaetsa moleng o le mong kapa ho feta. Eena e tsamaisa melaetsa ho ea mokolokong e ipapisitse le lihokelo tse entsoeng (bindings) lipakeng tsa eona le letoto.

Exchange ha e joalo Erlang process. Ka mabaka a scalability exchange ke khoele (sehokelo sa module le khoutu moo logic ea routing e leng teng) polokelong ea polokelo e kenyellelitsoeng mnesia. Barekisi ba likete tse 1 ba tla ja 1MB feela ea memori.

Lethathamo la tse kahare

Phapanyetsano e tobileng

Direct exchange - e sebelisoa ha ho hlokahala fana ka molaetsa ho mela e itseng. Molaetsa o phatlalalitsoe ho morekisi ka mokhoa o itseng senotlolo sa ho tsamaisa 'me e kene melaleng eohle e amanang le phapanyetsano ena e nang le senotlolo se ts'oanang sa ho tsamaisa. Senotlolo sa ho tsamaisa ke khoele. Ho kopanya ho etsoa ho sebelisoa ho lekola likhoele bakeng sa tekano.

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

В rabbitmq ho na le mohopolo motjhesi wa kamehla. sena se direct exchange ha ho lebitso. Haeba ho sebelisoa phapanyetsano ea kamehla, joale molaetsa o tla fetisetsoa moleng o nang le lebitso le lekanang le senotlolo sa ho tsamaisa molaetsa.

Phapanyetsano ea Sehlooho

Topic exchange - e tšoanang direct exchange e nolofalletsa ho khetha tsela ka ho bapisa konopo ea ho tsamaisa. Empa, tabeng ena, senotlolo se fanoe ka mohlala. Ha u etsa template, sebelisa 0 kapa mantsoe a mangata (litlhaku AZ и az le lipalo 0-9), e arotsoe ka letheba, hammoho le matšoao * и #.

  • * - e ka nkeloa sebaka ke hantle 1 lentsoe
  • # - e ka nkeloa sebaka ke 0 kapa mantsoe a mangata

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Ho qala ka mofuta RabbitMQ 2.4.0 routing algorithm bakeng sa topic exchange qala ho sebetsa ho fihlela 145 nako kapele. Ba fihletse sena ka ho kenya tshebetsong katamelo leka ho kenya tshebetsong, e bolelang ho emela li-templates e le sebopeho sa sefate. Ka mohlala, li-templates a.b.c, a.*.b.c, a.#.c и b.b.c e tla emeloa ke sebopeho se latelang:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Ho bapisa mohlala ho phenyekolloa ho qala ho tloha motsong ho ea holimo ho ea tlase.

Likarolo:

  • tshebediso ya exchanger ena e ka ba khetho e ntle bakeng sa nts'etsopele ea app e tlang, hobane li-templates li ka etsoa kamehla e le hore molaetsa o phatlalatsoe ka tsela e tšoanang direct exchange kapa fanout exchange
  • li-template tse sebetsang * ka potlako haholoho feta litempele tse sebelisoang #.
  • topic exchange Butlenyana direct exchange

Fanout Exchange

Fanout exchange - melaetsa eohle e fetisetsoa ho mela eohle le haeba senotlolo sa ho tsamaisa se hlalositsoe molaetseng.

Likarolo:

  • RabbitMQ ha e sebetse ka linotlolo tsa routing le litempele e nang le phello e ntle tshebetsong. Ena ke eona e potlakileng ka ho fetisisa exchange;
  • bareki bohle ba tlameha ho khona ho sebetsana le melaetsa eohle;

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Headers Exchange

Headers exchange - e lebisa melaetsa ho mela e amanang le eona ho ipapisitsoe le lipara tsa (lihlopha, boleng) headers e tlamang le thepa ea molaetsa e ts'oanang. headers ke Dictionary<ключ, значение>.

Haeba o eketsa senotlolo se ikgethileng bukeng x-match e nang le moelelo any, ebe molaetsa o tsamaisoa haeba lipara (senotlolo, boleng) li lumellana ka mokhoa o itseng. Boitšoaro bona bo tšoana le bo sebetsang or.

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

Senotlolo sa kamehla x-match e na le boleng all. Sena se bolela hore molaetsa o tsamaisoa ha lipara (senotlolo, boleng) li lumellana ka ho feletseng. Boitšoaro bona bo tšoana le bo sebetsang and.

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Likarolo:

  • ho tenyetseha ho eketsehileng
  • tlhahiso e eketsehileng ea k'homphieutha. Lipara tsohle (senotlolo, boleng) ba tšobotsi headers e tlameha ho hlophisoa ka lebitso la sehlooho pele ho bala litekanyetso tsa ho tsamaisa melaetsa. E lieha ho feta mefuta e meng ea phapanyetsano.

Fetolana Hashing Exchange

Sena se fapanyetsana plugin и e sa hahoang в RabbitMQ.

Consistent-hashing exchange (phapanyetsano ka hashing e tsitsitseng) - e sebelisoang ha ho na le mela e mengata eo e ka bang batho ba ka amohelang molaetsa le ha o hloka ho leka-lekanya mojaro pakeng tsa bona. Molaetsa o amahanngoa le queue ka boima ba 'mele (tekanyo ea khoele ea maemo ho tloha ho 0 - n).

Boima bo lekanang ba mela - bo bontša hore mokoloko o mong le o mong o tla fumana e ka bang chelete e lekanang melaetsa (molaetsa o mong le o mong o tla beoa moleng o le mong feela). Ha ho na tiisetso e felletseng ea kabo e tšoanang ea melaetsa.

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Hash khomphutha ho ipapisitsoe le senotlolo sa tsela kapa thepa headers melaetsa. Haeba melaetsa eohle e hatisitsoeng e na le linotlolo tse fapaneng tsa ho tsamaisa, kapa headers, joale kabo e tla etsahala ka boima ba 'mele. Ho seng joalo, ho tla sebelisoa senotlolo sa ho tsamaisa, kapa headers.

E lokela ho thusa ha lisebelisoa tsa bareki li hloka ho hola ho feta tharollo ka bareki ba bangata ba sebelisang tatellano e tšoanang.

Motsoako oa li-exchangers (E2E)

Boitšoaro ba bohle ba ananyang bo ka kopanngoa ho sebelisa puisano Phapanyetsano ho Phapanyetsano (motsoako oa li-exchangers ha o kenyelelitsoe ho tlhaloso AMQP. Ena ke katoloso ea protocol ho tloha lehlakoreng RabbitMQ).

Setšoantšo sa setšoantšo sa phallo ea molaetsa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Ka litšenyehelo tsa E2E re ka fumana tlhophiso e nepahetseng ea scalable e fihlelang litlhoko tsa hajoale le tse ntseng li hola.

Theha Phapanyetsano

The exchanger e entsoe ka ho sebelisa synchronous RPC kopo ho seva. Kopo e etsoa ho sebelisoa mokhoa Exchange.Declare, e bitsoang ka li-parameter:

  • lebitso la phapanyetsano
  • mofuta oa phapanyetsano
  • dikgetho tse ding

Mohlala oa pōpo exchange ka thuso ea RabbitMQ.Client:

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

  • exchange - lebitso la phapanyetsano eo re batlang ho e theha. Lebitso le tlameha ho ikhetha
  • type - mofuta oa phapanyetsano
  • durable - haeba e kentsoe true, joale exchange e tla ba ka ho sa feleng. E tla bolokoa ho disk mme e tla khona ho phela ha seva / broker e qala hape. Haeba boleng false, joale exchange ke ea nakoana 'me e tla tlosoa ha seva/broker e qala hape
  • autoDelete - ho hlakolwa ka tsela e iketsang. Exchange e tla hlakoloa ha mela eohle e amanang le eona e hlakotsoe
  • arguments ke mabaka a boikhethelo. Hangata, ka likhang tse behiloeng alternative exchange (phapanyetsano e fapaneng). Haeba molaetsa o sa khone ho feta tseleng ea mantlha, o ka romelloa ho phapanyetsano e 'ngoe hore o tsamaee ka tsela e fapaneng.

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Haeba popo exchange hoa khoneha, joale seva se tla romella mofani oa synchronous RPC araba Exchange.DeclareOk. Haeba popo ha ho khonehe (ho ile ha hana kopo Exchange.Declare), joale mocha o tla koala seva e sebelisang taelo ea asynchronous Channel.Close mme moreki o tla fumana mokhelo OperationInterruptedException, e tla ba le khoutu ea phoso le tlhaloso ea eona.

Mochini o tlameha ho etsoa pele o romella. Haeba u phatlalatsa molaetsa ho morekisi e mong ea seng teng - RabbitMQ e tlose ka lenyele.

Theha GUI ea Phapanyetsano

Eya ho sehlopha sa admin RabbitMQ tlasa mosebedisi guest (lebitso la mosebelisi: guest le password: guest). Ka kopo elelloa hore mosebelisi guest e ka hokela feela ho tsoa ho localhost. Joale ha re ee ho tab Exchanges ebe o tobetsa Add a new exchange. Tlatsa thepa:

RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano

Boholo ba thepa bo hlalositsoe ka holimo. Mona re hlokomela hore haeba re beha Internal, joale phapanyetsano e ka sebelisoa feela bakeng sa E2E. Producer e ke ke ea khona ho romella melaetsa phapanyetsano e joalo.

fihlela qeto e

Ha o theha sistimi, ho bonolo ho hlalosa topology ho tsamaisa ho sebelisa kerafo. Empa pele o qala ho haha ​​​​graph, ho bohlokoa ho totobatsa litsela tse nang le sephethephethe se phahameng, hobane. ba hloka tlhahiso e phahameng (ts'ebetso). Ka mor'a moo, o ka hlophisa sephethephethe. Ebe u qala ho haha.

Haeba ho kerafo e hahiloeng ho na le finite set routing linotlolo, ka hona, ke habohlokoa ho sheba nģ'a tse 'maloa fanout exchange, e leng 1:1 e amanang le senotlolo sa ho tsamaisa. Hopola seo fanout exchange e potlakileng ka ho fetisisa.

Haeba palo ea litsela e sekamela ho se fele, ke habohlokoa ho ela hloko topic exchange kapa, haeba template e sa hlokahale, joale u ka khetha direct exchnge, hobane o lebelo topic exchange.

Likopano tsa mefuta e fapaneng exchange e lokela ho u thusa ho fumana e nepahetseng. tlhophiso e ka senyehang, e finyellang litlhoko tsa tsamaiso ea hona joale le e ntseng e hōla.

Palo ea exchange 'me mela e lokela ho ba nyane ha e bapisoa le palo ea litsela.

Sehloohong se latelang, re tla qala ho utloisisa haholoanyane ka Mela le Litlamo.

litšupiso

Source: www.habr.com

Eketsa ka tlhaloso