O dara osan, Habr! Mo fẹ lati pin iwe imọ-itọkasi ti imọ ti Mo ṣakoso lati gba lori RabbitMQ ki o si ṣajọpọ sinu awọn iṣeduro kukuru ati awọn ipinnu.
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
Ni ṣoki nipa AMQP
AMQP (Ilana Ifiranṣẹ Queuing Ifiranṣẹ to ti ni ilọsiwaju) jẹ ilana ṣiṣi fun gbigbe awọn ifiranṣẹ laarin awọn paati eto. Ero ipilẹ ni pe awọn eto iha-ara ẹni kọọkan (tabi awọn ohun elo ominira) le ṣe paṣipaarọ awọn ifiranṣẹ ni ọna lainidii nipasẹ alagbata AMQP, eyiti o ṣe ipa-ọna, o ṣee ṣe iṣeduro ifijiṣẹ, pinpin awọn ṣiṣan data, ati ṣe alabapin si awọn iru ifiranṣẹ ti o fẹ.
Ilana AMQP ṣafihan awọn imọran mẹta:
exchange (paṣipaarọ ojuami tabi paṣipaarọ) - awọn ifiranṣẹ ti wa ni rán si o. Aaye paṣipaarọ kaakiri ifiranṣẹ ninu ọkan tabi diẹ ẹ sii ti awọn ila. Arabinrin awọn ọna awọn ifiranṣẹ si isinyi da lori awọn asopọ ti o ṣẹda (binding) laarin on ati awọn ti isinyi
queue (isinyi) - eto data lori disk tabi ni Ramu pe tọju awọn ọna asopọ si awọn ifiranṣẹ ati fun awọn ẹda ti awọn ifiranṣẹ consumers (si awọn onibara)
binding (abuda) - ofin ti o sọ aaye paṣipaarọ eyi ti isinyi awọn ifiranṣẹ wọnyi yẹ ki o lọ sinu
Erlang ni idagbasoke nipasẹ awọn ile- Ericsson ni aarin-1980 bi pinpin, ọlọdun-aṣiṣe, eto akoko gidi fun awọn ohun elo ti o nilo 99,999% uptime. Erlang lo ni orisirisi ise ati igbalode ohun elo, f.eks. WhatsApp. O le ka diẹ sii ninu nkan naa WhatsApp faaji, eyi ti Facebook ra fun $19 bilionu
Ni ṣoki nipa RabbitMQ
EhoroMQ jẹ alagbata ifiranṣẹ orisun ṣiṣi. O ṣe itọsọna awọn ifiranṣẹ pẹlu gbogbo awọn ipilẹ ipilẹ ti ilana naa AMQP ṣàpèjúwe ninu ni pato. RabbitMQ awọn ohun elo ati ki o ṣe afikun ilana naa AMQP.
Ero akọkọ ti awoṣe fifiranṣẹ ni RabbitMQ nkan ni producer (olutẹwe) ko firanṣẹ taara si isinyi. Ni otitọ, ati ni igbagbogbo, olutẹjade ko paapaa mọ boya ifiranṣẹ naa yoo jẹ jiṣẹ si awọn isinyi eyikeyi rara.
Dipo, akede le fi awọn ifiranṣẹ ranṣẹ si paṣipaarọ nikan. Ni apa kan, paṣipaarọ gba awọn ifiranṣẹ lati ọdọ awọn olutẹwejade, ati ni apa keji, o firanṣẹ si awọn ila. Paṣipaarọ naa gbọdọ mọ gangan kini lati ṣe pẹlu ifiranṣẹ ti o gba. Ṣe o yẹ ki o fi kun si isinyi kan pato? Ṣe o yẹ ki o fi kun si awọn isinyi pupọ bi? Tabi ifiranṣẹ yẹ ki o foju pa.
Iṣẹ kukuru RabbitMQ le ṣe apejuwe bi atẹle:
Olutẹwe naa fi ifiranṣẹ ranṣẹ si paṣipaarọ kan pato
Paṣipaarọ, ti o ti gba ifiranṣẹ kan, o tọ si ọkan tabi diẹ sii awọn ila ni ibamu pẹlu awọn ofin abuda laarin rẹ ati isinyi.
Awọn ti isinyi tọjú a tọka si yi ifiranṣẹ. Ifiranṣẹ funrararẹ wa ni ipamọ ni Ramu tabi lori disk
Ni kete ti alabara ti ṣetan lati gba ifiranṣẹ kan lati isinyi, olupin naa ṣẹda ẹda ti ifiranṣẹ nipasẹ ọna asopọ kan ati firanṣẹ
Onibara gba ifiranṣẹ naa ati fi ijẹrisi ranṣẹ si alagbata naa
Awọn alagbata, lori gbigba ìmúdájú, yọ a daakọ ti awọn ifiranṣẹ lati awọn ti isinyi. Lẹhinna paarẹ lati Ramu ati disk
CPR
Ilana RPC (ipe ilana jijin) labẹ fere gbogbo awọn ibaraẹnisọrọ pẹlu arin RabbitMQ. Fun apẹẹrẹ, awọn ijiroro akọkọ nipa awọn ofin alabara pẹlu RabbitMQ, ṣe afihan ilana kan RPC. Ni kete ti ilana yii ba ti pari, RabbitMQ yoo ṣetan lati gba awọn ibeere lati ọdọ alabara:
Tun ni awọn sipesifikesonu AMQP mejeeji alabara ati olupin le fun awọn aṣẹ. Eyi tumọ si pe alabara n duro de ibaraẹnisọrọ pẹlu olupin naa. Awọn aṣẹ jẹ awọn kilasi ati awọn ọna. Fun apere, Connection.Start – ọna ipe Start kilasi Connection.
Asopọ ati awọn ikanni
Fun iru paṣipaarọ alaye laarin alabara ati olupin, awọn ikanni. Awọn ikanni ti wa ni da laarin pato asopọ. Ikanni kọọkan ti ya sọtọ lati awọn ikanni miiran. Ninu ọran amuṣiṣẹpọ, ko ṣee ṣe lati ṣiṣẹ pipaṣẹ atẹle titi ti idahun yoo fi gba.
Lati le fi awọn aṣẹ ranṣẹ ni afiwe, o ni lati ṣii awọn ikanni pupọ. Kọọkan ikanni ṣẹda lọtọ Erlang ilana. Isopọ kan le ni awọn ikanni pupọ (multiplexing). Fun ikanni kọọkan awọn ẹya kan wa ati awọn nkan ni iranti. Nitorina, awọn diẹ awọn ikanni ti o wa laarin a asopọ, awọn RabbitMQ nlo iranti diẹ sii lati ṣakoso iru asopọ kan.
Apeere ti o rọrun ti ṣiṣẹda asopọ ati ikanni lilo EhoroMQ.Obara:
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// Включение автоматичекого восстановления
// соединения после сбоев сети
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
Ṣiṣii asopọ tuntun fun iṣiṣẹ kọọkan jẹ irẹwẹsi pupọ bi eyi yoo ja si ga owo. Awọn ikanni yẹ ki o tun jẹ itẹramọṣẹ, ṣugbọn ọpọlọpọ awọn aṣiṣe ilana jẹ ki ikanni tiipa, nitorina igbesi aye ikanni le kuru ju ti asopọ lọ.
Nibo ni RabbitMQ ti lo?
Ni o tọ ti microservices, Ilana AMQP ati imuse rẹ ni RabbitMQ igba ti a lo fun asynchronous ibaraenisepo laarin awọn iṣẹ.
Ninu ọrọ ọrọ IIOT Ilana AMQP ati imuse rẹ ni RabbitMQ ti a lo fun paṣipaarọ data laarin awọn olupin (olupin-olupin). Tun lo ohun itanna MQTT Plugin RabbitMQ eyi ti o jẹ ẹya imuse ti awọn bèèrè MQTT fun gbigbe data laarin sensọ ati olupin ni iyara kekere, awọn agbegbe lairi (akojọ kikun ti awọn ilana atilẹyin ti wa ni atokọ ni ise agbese aaye ayelujara).
Ninu nkan atẹle a yoo bẹrẹ lati loye Awọn paṣipaarọ ni awọn alaye diẹ sii.