RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Π•Ρ€Π»Π°Π½Π³, AMQP

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΏΠ»Π°Π΄Π½Π΅, Π₯Π°Π±Ρ€! Π‘Π°ΠΊΠ°ΠΌ Π΄Π° сподСлам ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ-Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΊΠ½ΠΈΠ³Π° Π½Π° знаСња ΡˆΡ‚ΠΎ успСав Π΄Π° Π³ΠΈ собСрам RabbitMQ ΠΈ сС ΠΊΠΎΠ½Π΄Π΅Π½Π·ΠΈΡ€Π° Π²ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΈ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ.

Π‘ΠΎΠ΄Ρ€ΠΆΠΈΠ½Π°

  • RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Erlang, AMQP ΠΈ RPC
  • RabbitMQ. Π”Π΅Π» 2. Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Π½Π°
  • RabbitMQ. Π”Π΅Π» 3. Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π΅Π΄ΠΈΡ†ΠΈ ΠΈ врски
  • RabbitMQ. Π”Π΅Π» 4. Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ ΡˆΡ‚ΠΎ сС ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΈ Ρ€Π°ΠΌΠΊΠΈ
  • RabbitMQ. Π”Π΅Π» 5: ИзвСдба Π½Π° ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ° Π½Π° ΠΏΠΎΡ€Π°ΠΊΠΈ
  • RabbitMQ. Π”Π΅Π» 6. ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π½Π° Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π»ΠΎΠΏΠ°Ρ‚Π°
  • RabbitMQ. Π”Π΅Π» 7. Π”Π΅Ρ‚Π°Π»ΠΈ Π·Π° Connection ΠΈ Chanel
  • RabbitMQ. Π”Π΅Π» 8. RabbitMQ Π²ΠΎ .NET
  • RabbitMQ. Π”Π΅Π» 9. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

Накратко Π·Π° AMQP

AMQP (Advanced Message Quueing Protocol) Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° прСнос Π½Π° ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° систСмот. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° идСја Π΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈΡ‚Π΅ потсистСми (ΠΈΠ»ΠΈ нСзависни Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ) ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Ρ€Π°Π·ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΡ€Π°ΠΊΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΏΡ€Π΅ΠΊΡƒ AMQP Π±Ρ€ΠΎΠΊΠ΅Ρ€, кој Π²Ρ€ΡˆΠΈ Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅, Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° испорака, дистрибуира Ρ‚Π΅ΠΊΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ сС ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚ΠΈ Π½Π° саканитС Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΏΠΎΡ€Π°ΠΊΠΈ.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» AMQP Π²ΠΎΠ²Π΅Π΄ΡƒΠ²Π° Ρ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ:

RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Π•Ρ€Π»Π°Π½Π³, AMQP

  • exchange (Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Π½Π°) - ΠΏΠΎΡ€Π°ΠΊΠΈ сС ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ Π΄ΠΎ Π½Π΅Π³ΠΎ. Π’ΠΎΡ‡ΠΊΠ° Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Π° ја дистрибуира ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° Π²ΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ повСќС Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π’Π°Π° Π³ΠΈ насочува ΠΏΠΎΡ€Π°ΠΊΠΈΡ‚Π΅ Π²ΠΎ Ρ€Π΅Π΄ΠΈΡ†Π° Π²Ρ€Π· основа Π½Π° ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ врски (binding) ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π½Π΅Π³ΠΎ ΠΈ Ρ€Π΅Π΄ΠΎΡ‚
  • queue (Ρ€Π΅Π΄ΠΈΡ†Π°) - структура Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° дискот ΠΈΠ»ΠΈ Π²ΠΎ RAM ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ складира Π»ΠΈΠ½ΠΊΠΎΠ²ΠΈ Π΄ΠΎ ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΈ Π΄Π°Π²Π° ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ ΠΏΠΎΡ€Π°ΠΊΠΈΡ‚Π΅ consumers (Π½Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅)
  • binding (ΠΎΠ±Π²Ρ€Π·ΡƒΠ²Π°Ρ‡ΠΊΠΈ) - ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡˆΡ‚ΠΎ ѝ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Π° Π²ΠΎ која Ρ€Π΅Π΄ΠΈΡ†Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ΄Π°Ρ‚ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΡ€Π°ΠΊΠΈ

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π²Ρ€Π²ΠΎΡ‚ TCP / IP.

Накратко Π·Π° Π•Ρ€Π»Π°Π½Π³

Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΅ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° GitHub. АрхитСктура RabbitMQ-сСрвСр Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Π•Ρ€Π»Π°Π½Π³ ΠΈ ГРЕДА.

Erlang Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π° Ericsson Π²ΠΎ срСдината Π½Π° 1980-Ρ‚ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ дистрибуиран, Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π΅Π½ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, систСм Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΈ Π±Π°Ρ€Π°Π°Ρ‚ 99,999% uptime. Erlang сС користи Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ индустрии ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½Π° ΠΏΡ€. WhatsApp. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ повСќС Π²ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° АрхитСктура Π½Π° WhatsApp, која Facebook ја ΠΊΡƒΠΏΠΈ Π·Π° 19 ΠΌΠΈΠ»ΠΈΡ˜Π°Ρ€Π΄ΠΈ Π΄ΠΎΠ»Π°Ρ€ΠΈ

Накратко Π·Π° RabbitMQ

Π—Π°Ρ˜Π°ΠΊΠΎΡ‚ MQ Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€ Π·Π° ΠΏΠΎΡ€Π°ΠΊΠΈ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄. Π“ΠΈ насочува ΠΏΠΎΡ€Π°ΠΊΠΈΡ‚Π΅ ΠΏΠΎ ситС основни ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ AMQP опишано Π²ΠΎ спСцификации. RabbitMQ Π³ΠΎ спровСдува ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡƒΠ²Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ AMQP.

Π“Π»Π°Π²Π½Π°Ρ‚Π° идСја Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π·Π° ΠΏΠΎΡ€Π°ΠΊΠΈ Π²ΠΎ RabbitMQ Ρ€Π°Π±ΠΎΡ‚Π° Π΅ producer (ΠΈΠ·Π΄Π°Π²Π°Ρ‡) Π½Π΅ ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΏΠΎΡ€Π°ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄ΠΎ Ρ€Π΅Π΄ΠΎΡ‚. Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, ΠΈ доста чСсто, ΠΈΠ·Π΄Π°Π²Π°Ρ‡ΠΎΡ‚ Π΄ΡƒΡ€ΠΈ ΠΈ Π½Π΅ Π·Π½Π°Π΅ Π΄Π°Π»ΠΈ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ ќС Π±ΠΈΠ΄Π΅ доставСна Π΄ΠΎ која Π±ΠΈΠ»ΠΎ Ρ€Π΅Π΄ΠΈΡ†Π°.

НамСсто Ρ‚ΠΎΠ°, ΠΈΠ·Π΄Π°Π²Π°Ρ‡ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΏΠΎΡ€Π°ΠΊΠΈ само Π΄ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π°Ρ‚Π°. Од Π΅Π΄Π½Π° страна, Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π°Ρ‚Π° Π΄ΠΎΠ±ΠΈΠ²Π° ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΎΠ΄ ΠΈΠ·Π΄Π°Π²Π°Ρ‡ΠΈΡ‚Π΅, Π° ΠΎΠ΄ Π΄Ρ€ΡƒΠ³Π° страна Π³ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ° Π²ΠΎ Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π Π°Π·ΠΌΠ΅Π½Π°Ρ‚Π° ΠΌΠΎΡ€Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π° Π·Π½Π°Π΅ ΡˆΡ‚ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ со ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° ΡˆΡ‚ΠΎ ја ΠΏΡ€ΠΈΠΌΠ°. Π”Π°Π»ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π΄ΠΎΠ΄Π°Π΄Π΅ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Ρ€Π΅Π΄ΠΈΡ†Π°? Π”Π°Π»ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π΄ΠΎΠ΄Π°Π΄Π΅ Π½Π° повСќС Ρ€Π΅Π΄ΠΈΡ†ΠΈ? Или ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°.

RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Π•Ρ€Π»Π°Π½Π³, AMQP

ΠšΡ€Π°Ρ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π° RabbitMQ ΠΌΠΎΠΆΠ΅ Π΄Π° сС опишС Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½:

  1. Π˜Π·Π΄Π°Π²Π°Ρ‡ΠΎΡ‚ ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΏΠΎΡ€Π°ΠΊΠ° Π΄ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Π½Π°
  2. Π Π°Π·ΠΌΠ΅Π½Π°Ρ‚Π°, ΠΎΡ‚ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠ±ΠΈΠ»Π° ΠΏΠΎΡ€Π°ΠΊΠ°, ја насочува ΠΊΠΎΠ½ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ повСќС Ρ€Π΅Π΄ΠΈΡ†ΠΈ Π²ΠΎ согласност со ΠΎΠ±Π²Ρ€Π·ΡƒΠ²Π°Ρ‡ΠΊΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π½Π΅Π° ΠΈ Ρ€Π΅Π΄ΠΎΡ‚
  3. Π Π΅Π΄ΠΎΡ‚ складира Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π° Π·Π° ΠΎΠ²Π°Π° ΠΏΠΎΡ€Π°ΠΊΠ°. Π‘Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎΡ€Π°ΠΊΠ° Π΅ Π·Π°Ρ‡ΡƒΠ²Π°Π½Π° Π²ΠΎ RAM ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈΠ»ΠΈ Π½Π° диск
  4. ΠžΡ‚ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΎΡ‚ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π΄Π° ΠΏΡ€ΠΈΠΌΠΈ ΠΏΠΎΡ€Π°ΠΊΠ° ΠΎΠ΄ Ρ€Π΅Π΄ΠΎΡ‚, сСрвСрот создава копија ΠΎΠ΄ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅ΠΊΡƒ врската ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ°
  5. ΠŸΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΎΡ‚ ја ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΏΠΎΡ‚Π²Ρ€Π΄Π° Π΄ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΡ‚
  6. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΡ‚, ΠΏΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΠΎΡ‚Π²Ρ€Π΄Π°, отстранува копија ΠΎΠ΄ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° ΠΎΠ΄ Ρ€Π΅Π΄ΠΎΡ‚. ΠŸΠΎΡ‚ΠΎΠ° сС Π±Ρ€ΠΈΡˆΠ΅ ΠΎΠ΄ RAM ΠΈ диск

Rpc

процСс RPC (ΠΏΠΎΠ²ΠΈΠΊ Π·Π° далСчинска ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°) Π»Π΅ΠΆΠΈ Π²ΠΎ основата Π½Π° рСчиси ситС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΠΈ со Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ RabbitMQ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π²ΠΈΡ‡Π½ΠΈΡ‚Π΅ дискусии Π·Π° условитС Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ со RabbitMQ, ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ процСс RPC. ΠžΡ‚ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°Π° Π½ΠΈΠ·Π° Π΅ Π·Π°Π²Ρ€ΡˆΠ΅Π½Π°, RabbitMQ ќС Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π΄Π° ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈ Π±Π°Ρ€Π°ΡšΠ° ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚:

RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Π•Ρ€Π»Π°Π½Π³, AMQP

Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ° Π²ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° AMQP ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ΠΈ сСрвСрот ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ΠΈΠ·Π΄Π°Π²Π°Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Ова Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Ρ‡Π΅ΠΊΠ° Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со сСрвСрот. ΠšΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ сС класи ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Connection.Start – ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΠΊ Start класа Connection.

Врска ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ

Π—Π° Ρ‚Π°ΠΊΠ²Π° Ρ€Π°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ΠΈ сСрвСрот, ΠΊΠ°Π½Π°Π»ΠΈ. ΠšΠ°Π½Π°Π»ΠΈΡ‚Π΅ сС создаваат Π²Π½Π°Ρ‚Ρ€Π΅ спСцифична врска. БСкој ΠΊΠ°Π½Π°Π» Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ. Π’ΠΎ синхрониот ΡΠ»ΡƒΡ‡Π°Ρ˜, Π½Π΅ Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ сС Π΄ΠΎΠ±ΠΈΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€.

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΊΠ°Π½Π°Π»ΠΈ. БСкој ΠΊΠ°Π½Π°Π» создава посСбСн Erlang процСс. Π•Π΄Π½Π° врска ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° повСќС ΠΊΠ°Π½Π°Π»ΠΈ (ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅). Π—Π° сСкој ΠΊΠ°Π½Π°Π» ΠΈΠΌΠ° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ структури ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. Π—Π°Ρ‚ΠΎΠ°, ΠΊΠΎΠ»ΠΊΡƒ повСќС ΠΊΠ°Π½Π°Π»ΠΈ ΠΈΠΌΠ° Π²ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° врска, Ρ‚ΠΎΠ»ΠΊΡƒ RabbitMQ користи повСќС ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Π°Ρ‚ со Ρ‚Π°ΠΊΠ²Π° врска.

RabbitMQ. Π”Π΅Π» 1. Π’ΠΎΠ²Π΅Π΄. Π•Ρ€Π»Π°Π½Π³, AMQP

ЕдноставСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° создавањС врска ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ ΠΊΠ°Π½Π°Π» RabbitMQ.ΠšΠ»ΠΈΠ΅Π½Ρ‚:

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

ΠžΡ‚Π²ΠΎΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½ΠΎΠ²Π° врска Π·Π° сСкоја ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π΅ строго обСсхрабрСно Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΎΠ²Π° ќС Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ високи Ρ‚Ρ€ΠΎΡˆΠΎΡ†ΠΈ. ΠšΠ°Π½Π°Π»ΠΈΡ‚Π΅ исто Ρ‚Π°ΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³Ρƒ Π³Ρ€Π΅ΡˆΠΊΠΈ Π²ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ Π·Π°Ρ‚Π²ΠΎΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ‚, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈΠΎΡ‚ Π²Π΅ΠΊ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΠΊΡ€Π°Ρ‚ΠΎΠΊ ΠΎΠ΄ оној Π½Π° врската.

КадС сС користи RabbitMQ?

Π’ΠΎ контСкст Π½Π° микросСрвиситС, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ AMQP ΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ RabbitMQ чСсто сС користи Π·Π° асинхрона ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ услугитС.

Π’ΠΎ контСкстот IIOT ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» AMQP ΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ RabbitMQ сС користи Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ сСрвСри (сСрвСр-сСрвСр). Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, користСтС Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ MQTT ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ RabbitMQ ΡˆΡ‚ΠΎ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ MQTT Π·Π° прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ сСнзорот ΠΈ сСрвСрот Π²ΠΎ срСдини со ΠΌΠ°Π»Π° Π±Ρ€Π·ΠΈΠ½Π° ΠΈ висока латСнтност (цСлосСн список Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ Π½Π° Π²Π΅Π±-страница Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚).

Π’ΠΎ слСдната ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ ΠΏΠΎΠ΄Π΅Ρ‚Π°Π»Π½ΠΎ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ Π Π°Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅.

Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€