RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Exchange - exchanger kapena exchanger point. Mauthenga amatumizidwa kwa icho. Exchange amagawa uthenga pamzere umodzi kapena zingapo. Iye amatumiza mauthenga pamzere kutengera maulalo opangidwa (bindings) pakati pake ndi mzere.

Exchange sichoncho Erlang process. Zifukwa za scalability exchange ndi chingwe (cholumikizira ku module yokhala ndi code pomwe njira yolowera ili) mu database yophatikizidwa mnesia. Osinthana 1 chikwi adzadya 1MB yokha ya kukumbukira.

Zamkatimu

  • RabbitMQ. Gawo 1. Chiyambi. Erlang, AMQP ndi RPC
  • RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana
  • RabbitMQ. Gawo 3. Kumvetsetsa Mizere ndi Zomangamanga
  • RabbitMQ. Gawo 4. Kuchita ndi zomwe zili mauthenga ndi mafelemu
  • RabbitMQ. Gawo 5: Kusindikiza ndi Kugwiritsa Ntchito Mauthenga
  • RabbitMQ. Gawo 6. mwachidule za Federation ndi Mafosholo Module
  • RabbitMQ. Gawo 7. Tsatanetsatane wa Kulumikizana ndi Chanel
  • RabbitMQ. Gawo 8. RabbitMQ mu .NET
  • RabbitMQ. Gawo 9. Kuwunika

Kusintha kwachindunji

Direct exchange - amagwiritsidwa ntchito pakufunika perekani uthenga ku mizere yeniyeni. Uthenga umasindikizidwa kwa exchanger ndi yeniyeni kiyi yolowera ndikulowa mumizere yonse yomwe imalumikizidwa ndi chosinthira ichi chokhala ndi kiyi yofananira. Chinsinsi cha njira ndi chingwe. Kufananiza kumagwiritsidwa ntchito kuyang'ana zingwe za kufanana.

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

В rabbitmq pali lingaliro chosasintha chosasintha. izi direct exchange palibe dzina. Ngati chosinthira chosasinthika chikugwiritsidwa ntchito, ndiye kuti uthengawo udzatumizidwa pamzere wokhala ndi dzina lofanana ndi kiyi yotumizira uthenga.

Kusinthana Mutu

Topic exchange - zofanana direct exchange imathandiza kusankha njira pofanizira kiyi yolowera. Koma, pamenepa, fungulo laperekedwa pa template. Mukapanga template, gwiritsani ntchito 0 kapena mawu ochulukirapo (makalata AZ и az ndi manambala 0-9), olekanitsidwa ndi kadontho, komanso zizindikiro * и #.

  • * - akhoza kusinthidwa ndi ndendende 1 mawu
  • # - akhoza kusinthidwa ndi 0 kapena mawu ambiri

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Kuyambira Baibulo RabbitMQ 2.4.0 routing algorithm kwa topic exchange anayamba kugwira ntchito mpaka 145 nthawi mwachangu. Iwo adakwaniritsa izi pokhazikitsa njirayo yesani kukhazikitsa, zomwe zikutanthawuza kuyimira ma templates monga mtengo wamtengo. Mwachitsanzo ma templates a.b.c, a.*.b.c, a.#.c и b.b.c idzayimiridwa ndi dongosolo ili:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Kufananiza kwachitsanzo kumafufuzidwa kuyambira muzu ndi kupita pamwamba mpaka pansi.

Zopadera:

  • ntchito exchanger izi akhoza kukhala chisankho chabwino pakupanga pulogalamu yamtsogolo, chifukwa ma templates amatha kusinthidwa nthawi zonse kuti uthengawo usindikizidwe mofanana direct exchange kapena fanout exchange
  • ma templates omwe amagwiritsa ntchito * mofulumira kwambirikuposa ma templates omwe amagwiritsa ntchito #.
  • topic exchange Mochedwerako direct exchange

Kusinthana kwa Fanout

Fanout exchange - mauthenga onse amaperekedwa ku mizere yonse ngakhale kiyi yolowera yafotokozedwa mu uthengawo.

Zopadera:

  • RabbitMQ sichigwira ntchito ndi makiyi apanjira ndi ma templates zomwe zimakhala ndi zotsatira zabwino pakuchita. Ichi ndiye chothamanga kwambiri exchange;
  • ogula onse ayenera kutha kukonza mauthenga onse;

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Kusinthana kwa Headers

Headers exchange - amawongolera mauthenga ku mizere yofananira kutengera kufananiza kwa magulu awiri (makiyi, mtengo) headers zomanga ndi zofananira uthenga katundu. headers ndi Dictionary<ключ, значение>.

Ngati muwonjezera kiyi yapadera kudikishonale x-match ndi tanthauzo any, ndiye uthenga umayendetsedwa ngati awiriawiri (kiyi, mtengo) akugwirizana pang'ono. Mchitidwewu ndi wofanana ndi wogwiritsa ntchito or.

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

Kiyi yofikira x-match ili ndi mtengo all. Izi zikutanthauza kuti uthengawo umayendetsedwa pamene awiriawiri (kiyi, mtengo) akugwirizana kwathunthu. Mchitidwewu ndi wofanana ndi wogwiritsa ntchito and.

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Zopadera:

  • kusinthasintha kwina
  • zowonjezera zowerengera. Onse awiriawiri (kiyi, mtengo) wa chikhalidwe headers ziyenera kusanjidwa ndi dzina lofunikira musanawerenge mayendedwe a mauthenga. Pang'onopang'ono kuposa mitundu ina yakusinthana.

Kusinthana kwa Hashing

exchanger iyi ndi pulogalamu yowonjezera и osamangidwa в RabbitMQ.

Consistent-hashing exchange (kusinthanitsa kwa hashi) - kumagwiritsidwa ntchito ngati pali mizere ingapo yomwe ingathe kulandira uthenga komanso pamene mukufunikira kukweza bwino pakati pawo. Uthengawu umalumikizidwa ndi mzere potengera kulemera kwake (chingwe chokhazikika kuchokera 0 - n).

Kulemera kofanana kwa mizere - kumasonyeza kuti mzere uliwonse udzalandira pafupifupi ndalama zomwezo mauthenga (uthenga uliwonse udzayikidwa pamzere umodzi wokha). Palibe chitsimikizo chathunthu cha kugawidwa kofanana kwa mauthenga.

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Hash kuwerengera kutengera makiyi apanjira kapena katundu headers mauthenga. Ngati mauthenga onse osindikizidwa anali ndi makiyi osiyana siyana, kapena headers, ndiye kugawa kudzachitika ndi kulemera kwake. Apo ayi, kiyi yolowera idzagwiritsidwa ntchito, kapena headers.

Iyenera kuthandizira pamene kuchuluka kwa ogula kukufunika kukulirakulira kusiyana ndi njira yomwe ogula ambiri amagwiritsa ntchito pamzere womwewo.

Kuphatikiza kwa exchangers (E2E)

Makhalidwe a onse osinthanitsa amatha kuphatikizidwa pogwiritsa ntchito kulumikizana Kusinthana-ku-Kusinthanitsa (kuphatikiza kwa exchangers sikuphatikizidwa muzofotokozera AMQP. Uku ndikuwonjezera kwa protocol kuchokera kumbali RabbitMQ).

Chiwonetsero chamayendedwe a uthenga:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Pogwiritsa ntchito E2E titha kupeza masinthidwe oyenera osinthika omwe amakwaniritsa zomwe zikuchitika komanso zomwe zikukula.

Pangani Kusinthana

Kusinthana kumapangidwa pogwiritsa ntchito synchronous RPC pempho kwa seva. Pempho limapangidwa pogwiritsa ntchito njira Exchange.Declare, otchedwa ndi magawo:

  • exchanger dzina
  • exchanger mtundu
  • njira zina

Chitsanzo cha chilengedwe exchange mothandizidwa ndi KaluluMQ.Client:

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

  • exchange - dzina la exchanger yomwe tikufuna kupanga. Dzina liyenera kukhala lapadera
  • type - mtundu wa exchanger
  • durable - ngati atayikidwa true, ndiye exchange adzakhala kosatha. Idzasungidwa pa disk ndipo idzatha kupulumuka kuyambiranso kwa seva / broker. Ngati mtengo false, ndiye exchange ndizosakhalitsa ndipo zidzachotsedwa pamene seva/broker ayambiranso
  • autoDelete - kufufutidwa basi. Exchange zichotsedwa pamene mizere onse ogwirizana zichotsedwa
  • arguments ndi mikangano yosankha. Nthawi zambiri, kudzera m'mikangano yomwe yakhazikitsidwa alternative exchange (njira ina exchanger). Ngati uthenga sungathe kudutsa njira yoyambirira, ukhoza kutumizidwa kumayiko ena kuti utumizidwe kunjira ina.

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Ngati chilengedwe exchange mwina, ndiye seva imatumiza kasitomala masinthidwe RPC Yankhani Exchange.DeclareOk. Ngati chilengedwe zosatheka (panali kukana pempholo Exchange.Declare) ndiye njira idzatseka seva pogwiritsa ntchito lamulo la asynchronous Channel.Close ndipo kasitomala adzapeza zosiyana OperationInterruptedException, yomwe idzakhala ndi code yolakwika ndi kufotokozera kwake.

Exchanger iyenera kupangidwa musanatumize. Ngati mufalitsa uthenga kwa osinthanitsa omwe kulibe - RabbitMQ chotsani mwakachetechete.

Pangani Kusinthana GUI

Pitani ku gulu la admin RabbitMQ pansi pa wogwiritsa guest (dzina lolowera: guest ndi password: guest). Chonde dziwani kuti wosuta guest imatha kulumikizana kuchokera ku localhost. Tsopano tiyeni tipite ku tabu Exchanges ndipo dinani Add a new exchange. Lembani katundu:

RabbitMQ. Gawo 2. Kumvetsetsa Kusinthana

Zambiri mwazinthu zafotokozedwa pamwambapa. Apa tikuwona kuti ngati tikhala Internal, ndiye kusinthanitsa kungagwiritsidwe ntchito kokha E2E. Producer sadzatha kutumiza mauthenga kusinthanitsa koteroko.

Pomaliza

Popanga dongosolo, ndikwabwino kufotokozera topology mayendedwe pogwiritsa ntchito graph. Koma musanayambe kupanga graph, ndi bwino kuwonetsa njira zomwe zili ndi magalimoto ambiri, chifukwa. amafuna kupititsa patsogolo (machitidwe). Kenako, mukhoza m'magulu a magalimoto. Kenako yambani kumanga.

Ngati mu graph yopangidwa ilipo malire makiyi apanjira, ndiye, ndikofunikira kuyang'ana zingapo fanout exchange, omwe ali 1: 1 okhudzana ndi kiyi yolowera. Kumbukirani zimenezo fanout exchange othamanga kwambiri.

Ngati chiwerengero cha njira zimakonda zopanda malire, m'pofunika kumvetsera topic exchange kapena, ngati template sikufunika, ndiye mukhoza kusankha direct exchnge, chifukwa ali wothamanga topic exchange.

Zosakaniza zosiyanasiyana exchange ziyenera kukuthandizani kupeza yoyenera. scalable kasinthidwe, yomwe imakwaniritsa zofunikira zonse zamakono komanso zomwe zikukula.

Chiwerengero cha exchange ndipo mizere ikhale yochepa poyerekeza ndi kuchuluka kwa njira.

M'nkhani yotsatira, tiyamba kumvetsetsa zambiri za Mizere ndi Zomangamanga.

powatsimikizira

Source: www.habr.com

Kuwonjezera ndemanga