Exchange - onipaṣiparọ tabi aaye paṣipaarọ. Awọn ifiranṣẹ ranṣẹ si i. Exchangekaakiri 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.
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ṣẹ:
В 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ṣẹ:
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:
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ọ:
RabbitMQko ṣ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ṣẹ:
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ṣẹ:
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ṣẹ:
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ṣẹ:
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:
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ọ.
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:
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.