EhoroMQ. Apá 2. Oye Pasipaaro

Exchange - onipaṣiparọ tabi aaye paṣipaarọ. Awọn ifiranṣẹ ranṣẹ si i. Exchange kaakiri ifiranṣẹ ninu ọkan tabi diẹ ẹ sii ti awọn ila. Oun awọn ọna awọn ifiranṣẹ si isinyi da lori awọn asopọ ti o ṣẹda (bindings) laarin on ati awọn ti isinyi.

Exchange kiise Erlang ilana. Fun awọn idi scalability exchange - Eyi jẹ laini kan (ọna asopọ si module pẹlu koodu nibiti ọgbọn ipa-ọna wa) ninu data data ti a ṣe sinu mnesia. 1 ẹgbẹrun exchangers yoo jẹ nikan 1MB ti iranti.

Tabili ti awọn akoonu

  • EhoroMQ. Apá 1. Ifihan. Erlang, AMQP ati RPC
  • EhoroMQ. Apá 2. Oye Pasipaaro
  • EhoroMQ. Apá 3. Oye queues ati bindings
  • EhoroMQ. Apá 4. Agbọye ohun ti awọn ifiranṣẹ ati awọn fireemu
  • EhoroMQ. Apá 5: Atẹjade Ifiranṣẹ ati Iṣẹ Lilo
  • EhoroMQ. Apá 6. Atunwo ti Federation ati Shovel modulu
  • EhoroMQ. Apá 7. Awọn alaye nipa Asopọmọra ati Shaneli
  • EhoroMQ. Apá 8. RabbitMQ ni .NET
  • EhoroMQ. Apá 9. Abojuto

Paṣipaarọ taara

Direct exchange - lo nigba ti nilo fi ifiranṣẹ ranṣẹ si awọn ila kan pato. Ifiranṣẹ naa ni a tẹjade si oluyipada pẹlu kan pato bọtini afisona ati ki o gba sinu gbogbo awọn queues ti o ti wa ni ti sopọ si yi exchanger pẹlu kan iru afisona bọtini. Bọtini ipa ọna jẹ okun kan. Ibamu ni a rii ni lilo yiyewo awọn gbolohun ọrọ fun deede.

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

В rabbitmq ero kan wa aiyipada exchanger... oun direct exchange ko si oruko. Ti o ba ti lo oluyipada aiyipada, ifiranṣẹ naa yoo lọ si isinyi pẹlu orukọ kan ti o dọgba si bọtini afisona ifiranṣẹ.

Paṣipaarọ koko

Topic exchange – iru direct exchange jeki afisona yiyan nipa wé awọn afisona bọtini. Ṣugbọn, ninu ọran yii, a fun bọtini naa gẹgẹ bi awọn awoṣe. Nigbati o ba ṣẹda awoṣe, lo 0 tabi awọn ọrọ diẹ sii (awọn lẹta AZ и az ati awọn nọmba 0-9), niya nipasẹ aami kan, bakanna bi awọn aami * и #.

  • * - le ti wa ni rọpo nipasẹ gangan 1 ọrọ naa
  • # - le ti wa ni rọpo nipasẹ 0 tabi diẹ ẹ sii ọrọ

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

Niwon ti ikede RabbitMQ 2.4.0 afisona alugoridimu fun topic exchange bẹrẹ ṣiṣẹ titi 145 igba yiyara. Wọn ṣaṣeyọri eyi nipa iṣafihan ọna kan gbiyanju imuse, eyiti o jẹ aṣoju awọn ilana bi eto igi kan. Fun apẹẹrẹ awọn awoṣe a.b.c, a.*.b.c, a.#.c и b.b.c yoo jẹ aṣoju nipasẹ ọna atẹle:

EhoroMQ. Apá 2. Oye Pasipaaro

Wiwa fun ibaramu apẹrẹ kan ni a ṣe bẹrẹ lati gbongbo ati tẹsiwaju lati oke de isalẹ.

Awọn ẹya ara ẹrọ:

  • awọn lilo ti yi exchanger le di kan ti o dara wun fun ṣee ṣe ojo iwaju idagbasoke ti awọn ohun elo, nitori Awọn awoṣe le ṣe adani nigbagbogbo ki ifiranṣẹ naa ba wa ni ọna kanna direct exchange tabi fanout exchange
  • awọn awoṣe ti o lo * yiyara pupọju awọn awoṣe ti o lo #.
  • topic exchange Diedie direct exchange

Fanout Exchange

Fanout exchange - gbogbo awọn ifiranṣẹ ti wa ni jišẹ si gbogbo awọn ti isinyi paapa ti o ba jẹ pato bọtini ipa-ọna ninu ifiranṣẹ naa.

Awọn ẹya ara ẹrọ:

  • RabbitMQ ko ṣiṣẹ pẹlu awọn bọtini afisona ati awọn awoṣe eyi ti o ni ipa rere lori iṣẹ-ṣiṣe. Eyi ni iyara julọ exchange;
  • gbogbo awọn onibara gbọdọ ni anfani lati lọwọ gbogbo awọn ifiranṣẹ;

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

Paṣipaarọ awọn akọle

Headers exchange - awọn ifiranṣẹ ipa-ọna si awọn ila ti o ni nkan ṣe da lori lafiwe ti (bọtini, iye) awọn orisii ohun-ini headers abuda ati iru ifiranṣẹ-ini. headers duro Dictionary<ключ, значение>.

Ti o ba fi bọtini pataki kan kun iwe-itumọ x-match pẹlu itumo any, lẹhinna ifiranṣẹ naa jẹ ipalọlọ ti ibaamu apakan kan ti (bọtini, iye) awọn orisii. Iwa yii jọra si oniṣẹ ẹrọ or.

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

Bọtini aiyipada x-match ni iye all. Eyi tumọ si pe ifiranṣẹ naa jẹ ipalọlọ ti awọn orisii (bọtini, iye) ba baamu ni deede. Iwa yii jọra si oniṣẹ ẹrọ and.

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

Awọn ẹya ara ẹrọ:

  • afikun ni irọrun
  • afikun iṣiro iṣiro. Gbogbo (bọtini, iye) awọn orisii abuda kan headers gbọdọ jẹ lẹsẹsẹ nipasẹ orukọ bọtini ṣaaju ṣiṣe iširo awọn iye afisona ifiranṣẹ. Losokepupo ju awọn iru paṣipaarọ miiran.

Dédé-Hashing Exchange

Eleyi jẹ exchanger pulọọgi ninu и ko itumọ ti ni в RabbitMQ.

Consistent-hashing exchange (paṣipaarọ pẹlu hashing dédé) - ti a lo nigbati ọpọlọpọ awọn ila wa ti o jẹ awọn olugba ti o pọju ti ifiranṣẹ, ati nigbati o nilo lati dọgbadọgba fifuye laarin wọn. Asopọ ti ifiranṣẹ kan pẹlu isinyi waye nipasẹ iwuwo (iye okun ni àídájú lati 0 - n).

Iwọn deede ti awọn isinyi - tọkasi pe isinyi kọọkan yoo gba to iwọn kanna awọn ifiranṣẹ (ifiranṣẹ kọọkan yoo gbe sinu isinyi kan nikan). Ko si iṣeduro pipe ti pinpin iṣọkan ti awọn ifiranṣẹ.

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

Hash iṣiro da lori afisona bọtini tabi ohun ini headers awọn ifiranṣẹ. Ti gbogbo awọn ifiranṣẹ ti a tẹjade ba ni awọn bọtini ipa ọna oriṣiriṣi tabi headers, lẹhinna pinpin yoo waye nipasẹ iwuwo. Bibẹẹkọ, bọtini ipa-ọna yoo ṣee lo tabi headers.

Yẹ ki o ṣe iranlọwọ nigbati iṣagbejade olumulo nilo lati dagba ti o ga ju ojutu kan pẹlu awọn onibara lọpọlọpọ nipa lilo isinyi kan.

Apapọ awọn oluyipada (E2E)

Iwa ti gbogbo awọn olupaṣipaarọ le ni idapo ni lilo ibaraẹnisọrọ Paṣipaarọ-si-paṣipaarọ (pipapọ awọn oluyipada ko si ninu sipesifikesonu AMQP. Eyi jẹ itẹsiwaju ti ilana lati ẹgbẹ RabbitMQ).

Aṣoju ayaworan ti sisan ifiranṣẹ:

EhoroMQ. Apá 2. Oye Pasipaaro

Ni laibikita fun E2E a le wa iṣeto iwọn ti o tọ lati pade awọn ibeere lọwọlọwọ ati dagba.

Ṣẹda Exchange

Ṣiṣẹda oluyipada kan waye nipa lilo amuṣiṣẹpọ RPC ìbéèrè si olupin. A ṣe ibeere naa nipa lilo ọna naa Exchange.Declareti a npe ni pẹlu awọn paramita:

  • exchanger orukọ
  • exchanger iru
  • miiran sile

Apẹẹrẹ ẹda exchange pẹlu iranlọwọ EhoroMQ.Obara:

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

  • exchange - awọn orukọ ti awọn exchanger ti a fẹ lati ṣẹda. Orukọ naa gbọdọ jẹ alailẹgbẹ
  • type - iru ti exchanger
  • durable - ti o ba ti fi sori ẹrọ truelẹhinna exchange yoo wa titilai. Yoo wa ni ipamọ sori disiki ati pe o le ye olupin/alataja tun bẹrẹ. Ti o ba ti iye falselẹhinna exchange jẹ igba diẹ ati pe yoo paarẹ nigbati olupin / alagbata ti tun atunbere
  • autoDelete - laifọwọyi yiyọ. Exchange yoo paarẹ nigbati gbogbo awọn ila ti o ni nkan ṣe pẹlu rẹ ti paarẹ
  • arguments - iyan ariyanjiyan. Ni ọpọlọpọ igba, wọn pato nipasẹ awọn ariyanjiyan alternative exchange (yiyan exchanger). Ti ifiranṣẹ ko ba le rin irin-ajo ni ọna atilẹba, o le fi ranṣẹ si oluyipada miiran lati wa ni ipa ọna ti o yatọ.

EhoroMQ. Apá 2. Oye Pasipaaro

Ti ẹda exchange ṣeeṣe, lẹhinna olupin naa yoo fi ibaraenisọrọ kan ranṣẹ RPC idahun Exchange.DeclareOk. Ti ẹda jẹ soro (Ìbéèrè ti a sẹ Exchange.Declare), lẹhinna ikanni yoo tilekun olupin lilo pipaṣẹ asynchronous Channel.Close ati awọn ose yoo gba ohun sile OperationInterruptedException, eyi ti yoo ni koodu aṣiṣe ati apejuwe rẹ.

Oluyipada kan gbọdọ ṣẹda ṣaaju fifiranṣẹ awọn ifiranṣẹ. Ti o ba ṣe atẹjade ifiranṣẹ kan si diẹ ninu awọn ti ko si tẹlẹ - RabbitMQ yoo yọ kuro ni idakẹjẹ.

Ṣiṣẹda Exchange nipasẹ GUI

Lọ si abojuto nronu RabbitMQ labẹ olumulo guest (orukọ olumulo: guest ati ọrọigbaniwọle: guest). Jọwọ ṣe akiyesi pe olumulo naa guest le sopọ nikan lati localhost. Bayi jẹ ki a lọ si taabu Exchanges ki o si tẹ lori Add a new exchange. Fọwọsi awọn ohun-ini:

EhoroMQ. Apá 2. Oye Pasipaaro

Pupọ julọ awọn ohun-ini ni a ti ṣalaye loke. Nibi a ṣe akiyesi pe ti a ba ṣeto Internal, lẹhinna paṣipaarọ le ṣee lo fun nikan E2E. Producer kii yoo ni anfani lati fi awọn ifiranṣẹ ranṣẹ si iru paṣipaarọ.

ipari

Nigbati o ba n dagbasoke eto, o rọrun lati ṣe apejuwe topology afisona lilo a awonya. Ṣugbọn ṣaaju ki o to bẹrẹ kikọ aworan kan, o tọ lati ṣe afihan awọn ọna pẹlu ijabọ giga, nitori awon ni o bere ti o ga losi (išẹ). Nigbamii ti, o le ṣe lẹtọ awọn ijabọ. Ati ki o nikan ki o si bẹrẹ Ilé.

Ti o ba wa ninu awọn ti won ko awonya ṣeto opin awọn bọtini ipa ọna, lẹhinna o tọ lati wo si ọna pupọ fanout exchange, tí ó jẹ́ 1:1 tí ó ní í ṣe pẹ̀lú kọ́kọ́rọ́ ì. A ranti pe fanout exchange ti o yara ju.

Ti o ba ti awọn nọmba ti ipa- ṣọ lati ailopin, lẹhinna o yẹ ki o san ifojusi si topic exchange tabi, ti awoṣe ko ba nilo, o le yan direct exchnge, nitori o yara topic exchange.

Awọn akojọpọ oriṣiriṣi exchange yẹ ki o ran ọ lọwọ lati wa eyi ti o tọ ti iwọn iṣeto ni, eyiti o pade awọn ibeere eto lọwọlọwọ ati idagbasoke.

Nọmba ti exchange ati awọn ila yẹ ki o jẹ iwonba akawe si awọn nọmba ti ipa-.

Ninu nkan ti o tẹle a yoo bẹrẹ lati loye Awọn ila ati Awọn isopọ ni awọn alaye diẹ sii.

jo

orisun: www.habr.com

Fi ọrọìwòye kun