RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP

Ehihie ọma, Habr! Achọrọ m ikesa akwụkwọ ọgụgụ-ntụgharị aka nke ọmụma nke m jisiri ike nakọta na ya RabbitMQ ma gbakọta n'ime ndụmọdụ dị mkpirikpi na nkwubi okwu.

Isiokwu dị n’ime

  • RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP na RPC
  • RabbitMQ. Nkebi 2. Nghọta mgbanwe
  • RabbitMQ. Nkebi 3. Ịghọta kwụ n'ahịrị na njikọ
  • RabbitMQ. Part 4. Ịghọta ihe ozi na okpokolo agba bụ
  • RabbitMQ. Nkebi nke 5: Nbipụta ozi na arụmọrụ oriri
  • RabbitMQ. Nkebi 6. Nyochaa nke Federation na shọvel modul
  • RabbitMQ. Nkebi nke 7. Nkọwa gbasara Njikọ na Chanel
  • RabbitMQ. Akụkụ 8. RabbitMQ na .NET
  • RabbitMQ. Nkebi 9. Nleba anya

Na nkenke gbasara AMQP

AMQP (Advanced Message Queuing Protocol) bụ protocol mepere emepe maka izisa ozi n'etiti akụrụngwa sistemụ. Echiche bụ isi bụ na sistemu dị n'otu n'otu (ma ọ bụ ngwa nọọrọ onwe ya) nwere ike ịgbanwe ozi n'ụzọ aka ike site na onye na-ere ahịa AMQP, nke na-arụ ọrụ ụzọ, ikekwe na-ekwe nkwa nnyefe, na-ekesa iyi data, ma denye aha na ụdị ozi achọrọ.

Protocol AMQP na-ewebata echiche atọ:

RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP

  • exchange (ebe mgbanwe ma ọ bụ mgbanwe) - ezigara ya ozi. Ebe mgbanwe na-ekesa ozi n'otu ahịrị ma ọ bụ karịa. Nwanyị na-eduga ozi na kwụ n'ahịrị dabere na njikọ ndị emepụtara (binding) n'etiti ya na kwụ n'ahịrị
  • queue ( kwụ n'ahịrị) - usoro data na diski ma ọ bụ na RAM nke ahụ na-echekwa njikọ na ozi ma na-enye mbipụta ozi consumers (ndị ahịa)
  • binding (njikọ) - iwu na na-agwa ebe mgbanwe nke kwụ n'ahịrị ozi ndị a kwesịrị ịbanye

The protocol na-agba ọsọ n'elu TCP / IP.

Na nkenke banyere Erlang

Koodu isi mmalite ọrụ a dị na ebe nchekwa na GitHub. Nrụpụta ihe owuwu RabbitMQ-ihe nkesa dabere na erlang na BEAM.

Erlang nke ụlọ ọrụ ahụ mepụtara Ericsson n'etiti 1980s dị ka ekesa, mmejọ-anabataghị, ezigbo oge usoro maka ngwa chọrọ 99,999% uptime. Erlang eji na ụlọ ọrụ dị iche iche na ngwa ọgbara ọhụrụ, dịka ọmụmaatụ. WhatsApp. Ị nwere ike ịgụkwu n'isiokwu Ihe owuwu WhatsApp, nke Facebook zụtara ijeri $19

Na nkenke gbasara RabbitMQ

Oke oyibo bụ onye na-ere ahịa ozi mepere emepe. Ọ na-ebuga ozi n'akụkụ ụkpụrụ niile bụ isi nke protocol IGBOB kọwara na nkọwa. RabbitMQ na-emejuputa atumatu ma na-agbakwunye protocol AMQP.

Isi echiche nke ụdị izi ozi na RabbitMQ ihe bụ producer (onye nkwusa) anaghị eziga ozi ozugbo na kwụ n'ahịrị. N'ezie, na ọtụtụ mgbe, onye bipụtara ya amaghịdị ma a ga-ezisa ozi ahụ n'ahịrị ọ bụla.

Kama, onye nkwusa nwere ike izipu ozi na mgbanwe. N'otu aka ahụ, mgbanwe ahụ na-enweta ozi sitere n'aka ndị nkwusa, n'aka nke ọzọ, ọ na-ezigara ha n'ahịrị. Mgbanwe ahụ aghaghị ịma kpọmkwem ihe a ga-eme na ozi ọ na-enweta. Ekwesịrị ịgbakwunye ya n'ahịrị a kapịrị ọnụ? Ekwesịrị ịgbakwunye ya n'ọtụtụ kwụ n'ahịrị? Ma ọ bụ ekwesịrị ileghara ozi ahụ anya.

RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP

Ọrụ dị nkenke RabbitMQ enwere ike ịkọwa dịka ndị a:

  1. Onye mbipụta na-eziga ozi na mgbanwe mgbanwe
  2. Mgbanwe, mgbe ọ nwetasịrị ozi, na-eduga ya na otu kwụ n'ahịrị ma ọ bụ karịa dịka iwu njikọ dị n'etiti ya na kwụ n'ahịrị.
  3. Ndị kwụ n'ahịrị na-echekwa ntụaka maka ozi a. A na-echekwa ozi ahụ n'onwe ya na RAM ma ọ bụ na diski
  4. Ozugbo onye ahịa dị njikere ịnata ozi site na kwụ n'ahịrị, ihe nkesa ahụ na-emepụta otu ozi site na njikọ wee zipu ozi.
  5. Onye na-azụ ahịa na-enweta ozi ahụ wee ziga nkwenye na onye na-ere ahịa
  6. Onye na-ere ahịa, mgbe ọ natara nkwenye, wepụrụ otu ozi ahụ n'ahịrị. Mgbe ahụ ehichapụ na RAM na diski

Rpc

usoro RPC (oku usoro ime anya) na-akwado ihe fọrọ nke nta ka ọ bụrụ mmekọrịta niile na nucleus RabbitMQ. Dịka ọmụmaatụ, mkparịta ụka mbụ gbasara usoro onye ahịa na ya RabbitMQ, na-egosi usoro ụfọdụ RPC. Ozugbo usoro a mechara, RabbitMQ ga-adị njikere ịnakwere arịrịọ sitere n'aka onye ahịa:

RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP

Ọzọkwa na nkọwapụta AMQP ma onye ahịa na ihe nkesa nwere ike ịnye iwu. Nke a pụtara na onye ahịa na-echere ka ya na ihe nkesa na-ekwurịta okwu. Iwu bụ klaasị na ụzọ. Ọmụmaatụ, Connection.Start – usoro oku Start klas Connection.

Njikọ na ọwa

Maka mgbanwe ozi dị otú ahụ n'etiti onye ahịa na nkesa, ọwa. A na-emepụta ọwa n'ime kpọmkwem njikọ. Ọwa ọ bụla dịpụrụ adịpụ na ọwa ndị ọzọ. N'okwu mmekọrịta, ọ gaghị ekwe omume ịme iwu na-esote ruo mgbe natara nzaghachi.

Iji nwee ike izipu iwu n'otu oge, ị ga-emepe ọtụtụ ọwa. Ọwa ọ bụla na-emepụta iche Erlang usoro. Otu njikọ nwere ike inwe ọtụtụ ọwa (multiplexing). Maka ọwa ọ bụla enwere ụfọdụ ihe owuwu na ihe na ebe nchekwa. Ya mere, ka ọwa na-enwe n'ime njikọ, na RabbitMQ na-eji ebe nchekwa karịa iji jikwaa njikọ dị otú ahụ.

RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP

Ihe atụ dị mfe nke ịmepụta njikọ na ọwa iji RabbitMQ.Onye ahịa:

// ...
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 
}

Imepe njikọ ọhụrụ maka ọrụ ọ bụla na-ada mbà n'obi dịka nke a ga-eduga na ọnụ ahịa dị elu. Ọwa kwesịkwara ịdị na-adịgide adịgide, ma ọtụtụ njehie protocol na-eme ka ọwa ahụ mechie, ya mere, oge ndụ nke ọwa nwere ike ịdị mkpụmkpụ karịa nke njikọ ahụ.

Ebee ka RabbitMQ na-eji?

N'ihe gbasara microservices, protocol AMQP na mmejuputa ya na RabbitMQ a na-ejikarị ya eme ihe mmekọrịta asynchronous n'etiti ọrụ.

N'okwu a IIOT protocol AMQP na mmejuputa ya na RabbitMQ eji maka mgbanwe data n'etiti sava (ihe nkesa-sava). Jirikwa ngwa mgbakwunye MQTT ngwa mgbakwunye RabbitMQ nke bụ mmejuputa iwu nke protocol MQTT maka ịnyefe data n'etiti ihe mmetụta na ihe nkesa na gburugburu ọsọ dị ala, dị elu (ndepụta zuru oke nke usoro nkwado na-edepụtara na webụsaịtị oru ngo).

N'isiokwu na-esonụ, anyị ga-amalite ịghọta mgbanwe n'ụzọ zuru ezu.

zoro

isi: www.habr.com

Tinye a comment