RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP

Galab wanaagsan, Habr! Waxaan rabaa inaan wadaago buug-tixraac buug aqooneed oo aan ku guulaystay inaan ku ururiyo RabbitMQ kuna soo ururi talooyinka gaagaaban iyo gabagabada.

Tusmada

  • RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP iyo RPC
  • RabbitMQ. Qaybta 2. Fahamka Isdhaafsiga
  • RabbitMQ. Qaybta 3. Fahamka safafka iyo xidhidhiyaha
  • RabbitMQ. Qaybta 4. Fahamka waxa fariimaha iyo xidhmooyinku yihiin
  • RabbitMQ. Qaybta 5: Daabacaadda iyo Isticmaalka Farriinta Waxqabadka
  • RabbitMQ. Qaybta 6. Dulmar guud oo ku saabsan Moduleska Federaalka iyo Majarafada
  • RabbitMQ. Qeybta 7. Faahfaahinta ku saabsan Xiriirinta iyo Chanel
  • RabbitMQ. Qaybta 8. RabbitMQ gudaha .NET
  • RabbitMQ. Qaybta 9. Korjoogteynta

Si kooban oo ku saabsan AMQP

AMQP (Advanced Message Queuing Protocol) waa borotokool furan oo fariimaha la isugu gudbiyo qaybaha nidaamka. Fikradda aasaasiga ah ayaa ah in nidaamyada hoose ee shakhsi ahaaneed (ama codsiyada madax-bannaan) ay ku beddelan karaan farriimaha si aan macquul ahayn iyada oo loo marayo dallaal AMQP, kaas oo fuliya dariiqa, suurtogalka ah dammaanad bixinta, qaybiya qulqulka xogta, oo ku biirta noocyada fariimaha la rabo.

Protocol AMQP waxay soo bandhigaysaa saddex fikradood:

RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP

  • exchange (goobta sarrifka ama sarrifka) - fariimaha ayaa loo diraa. Barta sarrifka qaybiya fariinta hal ama ka badan oo saf ah. iyada Jidadka fariimaha safka ku salaysan xiriiriyeyaasha la abuuray (binding) isaga iyo safka dhexdooda
  • queue ( safka ) - qaab-dhismeedka xogta ee diskka ama RAM in waxay kaydisaa xiriirinta fariimaha waxayna siisaa nuqullada fariimaha consumers (macaamiisha)
  • binding (binding) - xeer kaas wuxuu sheegayaa barta is dhaafsiga safka ay tahay in fariimahani galaan

Hab-maamuusku wuxuu ku socdaa dusha sare TCP / IP.

Si kooban oo ku saabsan Erlang

Koodhka isha mashruuca ayaa ku yaala kaydka at GitHub. Dhismaha RabbitMQ-server ku salaysan erlang iyo BEAM.

Erlang ay soo saartay shirkadu Ericsson badhtamihii 1980-meeyadii sida qaybsan, khalad-dulqaadka, nidaamka wakhtiga-dhabta ah ee codsiyada u baahan 99,999% wakhtiga la joogo. Erlang loo isticmaalo warshadaha kala duwan iyo codsiyada casriga ah, sida; WhatsApp. Waxaad wax badan ka akhrisan kartaa maqaalka Nashqada WhatsApp, oo Facebook ku iibsatay $19 bilyan

Si kooban oo ku saabsan RabbitMQ

BakayleMQ waa dilaal fariin il furan. Waxa ay farriimaha u marisaa dhammaan mabaadi'da aasaasiga ah ee borotokoolka AMQP lagu tilmaamay faahfaahinta. RabbitMQ waxay fulisaa oo ay kordhisaa hab-maamuuska AMQP.

Fikradda ugu weyn ee qaabka fariinta gudaha RabbitMQ wax waa producer (daabace) si toos ah fariimaha uguma soo diro safka Dhab ahaantii, iyo inta badan, madbacaduhu xitaa ma oga in farriinta la gayn doono saf kasta.

Taa baddalkeeda, daabacaaduhu wuxuu kaliya u diri karaa fariimaha sarrifka. Dhinaca kale, sarifku wuxuu helayaa farriimaha daabacayaasha, dhinaca kalena, waxay u dirtaa safafka. Sarifku waa inuu si sax ah u ogaadaa waxa lagu samaynayo fariinta la helayo. Ma in lagu daro saf gaar ah? Ma in lagu daro safaf badan? Ama fariinta waa in la iska indhatiraa.

RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP

Shaqo kooban RabbitMQ waxaa lagu tilmaami karaa sidan soo socota:

  1. Daabacadu waxay fariin u dirtaa wax is dhaafsi gaar ah
  2. Wax-is-weydaarsigu, markuu farriin helay, wuxuu u sii gudbiyaa hal ama in ka badan oo saf ah iyadoo la raacayo qawaaniinta u dhexeeya isaga iyo safka
  3. Safku wuxuu kaydiyaa tixraaca farriintan. Fariinta lafteeda waxa lagu kaydiyaa RAM ama saxanka
  4. Marka macaamilku diyaar u yahay inuu farriin ka helo safka, seerfarku wuxuu abuuraa nuqul fariinta isagoo adeegsanaya xiriiriye wuxuuna diraa
  5. Macmiilku waxa uu helayaa fariinta oo waxa uu xaqiijin u diraa dilaaliyaha
  6. Dallaalku, markuu helo xaqiijinta, wuxuu ka saarayaa nuqulka fariinta safka. Kadibna waxay tirtirtaa RAM iyo diskka

RPC

habka RPC (wacitaanka nidaamka fog) waxay hoosta ka xariiqaysaa ku dhawaad ​​dhammaan isdhexgalka xuddunta RabbitMQ. Tusaale ahaan, wadahadalada bilowga ah ee ku saabsan shuruudaha macmiilka RabbitMQ, waxay muujinaysaa hab gaar ah RPC. Marka taxanahan la dhammaystiro, RabbitMQ wuxuu diyaar u noqon doonaa inuu aqbalo codsiyada macmiilka:

RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP

Sidoo kale qeexitaanka AMQP macmiilka iyo server-ka labaduba waxay soo saari karaan amarro. Tani waxay ka dhigan tahay in macmiilku uu sugayo inuu la xiriiro server-ka. Amaradu waa fasallo iyo habab. Tusaale ahaan, Connection.Start - habka wac Start fasalka Connection.

Isku xirka iyo kanaalada

Wixii macluumaad ah ee ka dhexeeya macmiilka iyo server-ka, kanaalka. Kanaalka ayaa lagu abuuray gudaha xiriir gaar ah. Kanaal kastaa wuu ka go'doonsan yahay kanaalada kale. Kiis isku mid ah, suurtogal maaha in la fuliyo amarka xiga ilaa jawaab laga helayo.

Si aad u awoodo inaad u dirto amarrada isbarbar-dhigga, waa inaad furto dhowr kanaal. Kanaal kastaa wuxuu abuuraa mid gaar ah Erlang habka. Hal xiriir ayaa yeelan kara kanaalo badan (isku dhufasho). Kanaal kasta waxaa jira dhismayaal gaar ah iyo walxo xusuusta ku jira. Sidaa darteed, inta badan kanaalada waxaa jira xiriir gudaha, the RabbitMQ waxay isticmaashaa xasuus badan si loo maareeyo xiriirka noocaas ah.

RabbitMQ. Qaybta 1. Hordhac. Erlang, AMQP

Tusaale fudud oo ah abuurista xidhiidh iyo kanaal la isticmaalayo 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 
}

Furitaanka xiriir cusub ee hawlgal kasta si xoog leh ayaa loo niyad jabiyaa sida tan waxay horseedi doontaa kharashyo badan. Kanaalada waa inay sidoo kale ahaadaan kuwo joogto ah, laakiin khaladaad badan oo borotokool ah ayaa keena kanaalka inuu xidho, markaa cimriga kanaalka ayaa laga yaabaa inuu ka gaaban yahay kan isku xirka.

Halkee loo isticmaalaa RabbitMQ?

Marka la eego adeegyadda-yaraha, borotokoolka AMQP iyo hirgalinteeda RabbitMQ inta badan loo isticmaalo isdhexgalka asynchronous inta u dhaxaysa adeegyada.

In macnaha guud IIOT hab maamuuska AMQP iyo hirgalinteeda RabbitMQ loo isticmaalo isdhaafsiga xogta u dhaxaysa server-yada (server-server). Sidoo kale isticmaal plugin ah MQTT Plugin RabbitMQ kaas oo ah dhaqan gelinta hab-maamuuska MQTT gudbinta xogta u dhaxaysa dareemayaasha iyo server-ka ee xawaaraha hooseeya, jawiga daahsoonaanta sare (liiska buuxa ee borotokoolka la taageeray ayaa ku qoran website-ka mashruuca).

Maqaalka soo socda waxaan bilaabi doonaa inaan si faahfaahsan u fahanno Isweydaarsiga.

tixraacyada

Source: www.habr.com

Add a comment