RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP

Lumela, Habr! Ke batla ho arolelana buka-referense buka ea tsebo eo ke khonneng ho bokella ho eona RabbitMQ le ho ikamahanya le likhothaletso le liqeto tse khutšoane.

Lethathamo la tse kahare

  • RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP le RPC
  • RabbitMQ. Karolo ea 2. Ho utloisisa Liphapanyetsano
  • RabbitMQ. Karolo ea 3. Ho utloisisa Mela le Litlamo
  • RabbitMQ. Karolo ea 4. Ho utloisisa hore na melaetsa le liforeimi ke life
  • RabbitMQ. Karolo ea 5: Ho Phatlalatsa le ho Sebelisa Molaetsa oa Ts'ebetso
  • RabbitMQ. Karolo ea 6. Kakaretso ea Federation le Limojule tsa Kharafu
  • RabbitMQ. Karolo ea 7. Lintlha tse mabapi le Khokahano le Chanel
  • RabbitMQ. Karolo ea 8. RabbitMQ ho .NET
  • RabbitMQ. Karolo ea 9. Tlhokomelo

Ka bokhutšoanyane ka AMQP

AMQP (Advanced Message Queuing Protocol) ke protocol e bulehileng ea ho fetisa melaetsa pakeng tsa likarolo tsa tsamaiso. Maikutlo a mantlha ke hore litsamaiso tse nyane tsa motho ka mong (kapa lits'ebetso tse ikemetseng) li ka fapanyetsana melaetsa ka mokhoa o sa reroang ka AMQP broker, e etsang routing, mohlomong e tiisang ho tsamaisoa, ho aba melaetsa ea data, le ho ingolisa ho mefuta e lakatsehang ea melaetsa.

Protocol AMQP e hlahisa maikutlo a mararo:

RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP

  • exchange (phapanyetsano ntlha kapa phapanyetsano) - melaetsa e romeloa ho eona. Phapanyetsano ntlha abela molaetsa moleng o le mong kapa ho feta. Eena e tsamaisa melaetsa ho ea mokolokong e ipapisitse le lihokelo tse entsoeng (binding) pakeng tsa hae le mokoloko
  • queue (queue) - sebopeho sa data ho disk kapa ho RAM seo boloka lihokelo tsa melaetsa le ho fana ka likopi tsa melaetsa consumers (ho bareki)
  • binding (binding) - molao oo e bolella sebaka sa phapanyetsano eo melaetsa ena e lokelang ho kena ho eona

Protocol e matha ka holimo TCP / IP.

Ka bokhutšoanyane ka Erlang

Mohloli oa khoutu ea morero o sebakeng sa polokelo ho GitHub. Meaho RabbitMQ-server ho ipapisitsoe le erlang le BEAM.

Erlang e ntlafalitsoeng ke khampani Ericsson bohareng ba lilemo tsa bo-1980 e le mokhoa o ajoang, o mamellang liphoso, oa nako ea sebele bakeng sa likopo tse hlokang nako ea 99,999%. Erlang e sebelisoang liindastering tse fapaneng le lits'ebetsong tsa sejoale-joale, mohlala. WhatsApp. U ka bala ho eketsehileng sehloohong sena Mehaho ea WhatsApp, eo Facebook e e rekileng ka $ 19 limilione tse likete

Ka bokhutšoanyane ka RabbitMQ

MmutlaMQ ke morekisi oa molaetsa oa mohloli o bulehileng. E tsamaisa melaetsa ho latela melao-motheo eohle ea protocol AMQP hlalosoa ka tobileng. RabbitMQ e sebelisa le ho tlatselletsa protocol AMQP.

Mohopolo o ka sehloohong oa mohlala oa melaetsa ho RabbitMQ Ntho ke producer (mohatisi) ha a romele melaetsa ka kotloloho moleng. Ebile, mme hangata, mohatisi ha a tsebe le hore na molaetsa o tla romelloa moleng ofe kapa ofe ho hang.

Ho e-na le hoo, mohatisi a ka romela melaetsa feela ho phapanyetsano. Ka lehlakoreng le leng, phapanyetsano e fumana melaetsa e tsoang ho bahoeletsi, 'me ka lehlakoreng le leng, e ba romela meleng. Phapanyetsano e tlameha ho tseba hantle hore na e etse eng ka molaetsa oo e o fumanang. Na e lokela ho eketsoa moleng o itseng? Na e lokela ho eketsoa meleng e mengata? Kapa molaetsa o lokela ho hlokomolohuoa.

RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP

Mosebetsi o mokhutšoane RabbitMQ e ka hlalosoa ka tsela e latelang:

  1. Mohoeletsi o romela molaetsa ho phapanyetsano e itseng
  2. Phapanyetsano, ha e se e amohetse molaetsa, e e fetisetsa moleng o le mong kapa ho feta ho latela melao e tlamang lipakeng tsa eona le mokoloko.
  3. Lethathamo le boloka litšupiso tsa molaetsa ona. Molaetsa ka boona o bolokoa ho RAM kapa ho disk
  4. Hang ha moreki a se a itokiselitse ho amohela molaetsa ho tsoa moleng, seva se etsa kopi ea molaetsa ka sehokelo ebe se romella.
  5. Moreki o amohela molaetsa ebe o romela netefatso ho moreki
  6. Morekisi, ha a fumana tiiso, o tlosa kopi ea molaetsa ho tloha moleng. Ebe o hlakola ho tsoa ho RAM le disk

RPC

thulaganyou e RPC (mohala oa ts'ebetso o hole) e fana ka litšebelisano tsohle le khubu RabbitMQ. Mohlala, lipuisano tsa pele mabapi le maemo a moreki le RabbitMQ, e bontša mokhoa o itseng RPC. Hang ha tatellano ena e phethiloe, RabbitMQ e tla be e loketse ho amohela likopo ho tsoa ho moreki:

RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP

Hape ka litlhaloso AMQP ka bobeli moreki le seva li ka fana ka litaelo. Sena se bolela hore moreki o emetse ho buisana le seva. Litaelo ke lihlopha le mekhoa. Ka mohlala, Connection.Start – pitso ya mokgwa Start класса Connection.

Khokahano le likanale

Bakeng sa phapanyetsano ea tlhahisoleseling lipakeng tsa moreki le seva, dikanale. Likanale li entsoe ka hare kgokelo e itseng. Kanale e 'ngoe le e 'ngoe e arotsoe ho likanale tse ling. Tabeng ea synchronous, ha ho khonehe ho phethahatsa taelo e latelang ho fihlela karabo e amoheloa.

E le hore u khone ho romela litaelo ka mokhoa o ts'oanang, u tlameha ho bula likanale tse 'maloa. Mocha o mong le o mong o etsa e arohaneng Erlang tshebetso. Khokahano e le 'ngoe e ka ba le likanale tse ngata (ho kopitsa). Bakeng sa kanale ka 'ngoe ho na le libopeho le lintho tse itseng mohopolong. Ka hona, ha likanale tse ngata li le teng ka har'a khokahanyo, li RabbitMQ e sebelisa mohopolo o mongata ho laola kgokelo e jwalo.

RabbitMQ. Karolo ea 1. Selelekela. Erlang, AMQP

Mohlala o bonolo oa ho theha khokahano le kanale e sebelisoang RabbitMQ.Client:

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

Ho bula khokahano e ncha bakeng sa ts'ebetso ka 'ngoe ho nyahame haholo joalo ka sena e tla lebisa litšenyehelong tse phahameng. Mecha e boetse e lokela ho ba e tsitsitseng, empa liphoso tse ngata tsa protocol li etsa hore mocha o koalehe, kahoo bophelo ba mocha bo ka ba bokhutšoane ho feta ba khokahanyo.

RabbitMQ e sebelisoa hokae?

Boemong ba microservices, protocol AMQP le ts'ebetsong ea eona ka RabbitMQ hangata sebelisoa bakeng sa tshebeletsano e sa tshwaneng pakeng tsa litšebeletso.

Moelelong oa taba IIOT melaoana AMQP le ts'ebetsong ea eona ka RabbitMQ e sebelisetsoang phapanyetsano ea data pakeng tsa li-server (server-server). Hape sebelisa plugin MQTT plugin RabbitMQ e leng phethahatso ya protocol MQTT bakeng sa ho fetisetsa data lipakeng tsa sensor le seva maemong a lebelo le tlase, le maemo a phahameng a latency (lethathamo le felletseng la liprothokholo tse tšehelitsoeng le thathamisitsoe ho webosaete ea morero).

Sehloohong se latelang re tla qala ho utloisisa Exchanges ka botlalo.

litšupiso

Source: www.habr.com

Eketsa ka tlhaloso