RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. рдПрд░реНрд▓рд╛рдВрдЧ, рдПрдПрдордХреНрдпреВрдкреА

рд╢реБрдн рджреБрдкрд╛рд░, рд╣реЕрдмреНрд░! рдорд▓рд╛ рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ-рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЬреЗ рдореА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ RabbitMQ рдЖрдгрд┐ рд▓рд╣рд╛рди рд╢рд┐рдлрд╛рд░рд╕реА рдЖрдгрд┐ рдирд┐рд╖реНрдХрд░реНрд╖рд╛рдВрдордзреНрдпреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рд╛.

рд╕рд╛рдордЧреНрд░реА рд╕рд╛рд░рдгреА

  • RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. Erlang, AMQP рдЖрдгрд┐ RPC
  • RabbitMQ. рднрд╛рдЧ 2. рдПрдХреНрд╕рдЪреЗрдВрдЬреЗрд╕ рд╕рдордЬреВрди рдШреЗрдгреЗ
  • RabbitMQ. рднрд╛рдЧ 3. рд░рд╛рдВрдЧрд╛ рдЖрдгрд┐ рдмрдВрдзрдиреЗ рд╕рдордЬреВрди рдШреЗрдгреЗ
  • RabbitMQ. рднрд╛рдЧ 4. рд╕рдВрджреЗрд╢ рдЖрдгрд┐ рдлреНрд░реЗрдореНрд╕ рдХрд╛рдп рдЖрд╣реЗрдд рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ
  • RabbitMQ. рднрд╛рдЧ 5: рд╕рдВрджреЗрд╢ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреЗ
  • RabbitMQ. рднрд╛рдЧ 6. рдлреЗрдбрд░реЗрд╢рди рдЖрдгрд┐ рдлрд╛рд╡рдбреЗ рдореЙрдбреНрдпреВрд▓рдЪреЗ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди
  • RabbitMQ. рднрд╛рдЧ 7. рдХрдиреЗрдХреНрд╢рди рдЖрдгрд┐ рдЪреЕрдиреЗрд▓ рдмрджреНрджрд▓ рддрдкрд╢реАрд▓
  • RabbitMQ. рднрд╛рдЧ 8. .NET рдордзреНрдпреЗ RabbitMQ
  • RabbitMQ. рднрд╛рдЧ 9. рджреЗрдЦрд░реЗрдЦ

AMQP рдмрджреНрджрд▓ рдереЛрдбрдХреНрдпрд╛рдд

AMQP (Advanced Message Quueing Protocol) рд╣рд╛ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХрд╛рдВрдордзреАрд▓ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрд╣реЗ. рдореВрд│ рдХрд▓реНрдкрдирд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╡реИрдпрдХреНрддрд┐рдХ рдЙрдкрдкреНрд░рдгрд╛рд▓реА (рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ) AMQP рдмреНрд░реЛрдХрд░рджреНрд╡рд╛рд░реЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкрджреНрдзрддреАрдиреЗ рд╕рдВрджреЗрд╢рд╛рдВрдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХрд░реВ рд╢рдХрддрд╛рдд, рдЬреЗ рд░реВрдЯрд┐рдВрдЧ рдХрд░рддреЗ, рд╢рдХреНрдпрддреЛ рд╡рд┐рддрд░рдгрд╛рдЪреА рд╣рдореА рджреЗрддреЗ, рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЗрдЪреНрдЫрд┐рдд рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рд╕рджрд╕реНрдпрддреНрд╡ рдШреЗрддреЗ.

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ AMQP рддреАрди рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рд╛рджрд░ рдХрд░рддреЗ:

RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. рдПрд░реНрд▓рд╛рдВрдЧ, рдПрдПрдордХреНрдпреВрдкреА

  • exchange (рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреЙрдЗрдВрдЯ рдХрд┐рдВрд╡рд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ) - рддреНрдпрд╛рд╡рд░ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддрд╛рдд. рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреЙрдЗрдВрдЯ рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рд░рд╛рдВрдЧреЗрдд. рддреА рд╕рдВрджреЗрд╢ рд░рд╛рдВрдЧреЗрдд рдкрд╛рдард╡рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рджреБрд╡реНрдпрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд (binding) рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рд░рд╛рдВрдЧреЗрдЪреНрдпрд╛ рджрд░рдореНрдпрд╛рди
  • queue (рдХреНрдпреВ) - рдбрд┐рд╕реНрдХрд╡рд░ рдХрд┐рдВрд╡рд╛ RAM рдордзреАрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕рдВрджреЗрд╢рд╛рдВрдЪреЗ рджреБрд╡реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рд╕рдВрджреЗрд╢рд╛рдВрдЪреНрдпрд╛ рдкреНрд░рддреА рджреЗрддреЗ consumers (рдЧреНрд░рд╛рд╣рдХрд╛рдВрд╕рд╛рдареА)
  • binding (рдмрдВрдзрдирдХрд╛рд░рдХ) - рдПрдХ рдирд┐рдпрдо рдЬреЛ рд╣реЗ рд╕рдВрджреЗрд╢ рдХреЛрдгрддреНрдпрд╛ рд░рд╛рдВрдЧреЗрдд рдЬрд╛рд╡реЗрдд рд╣реЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреЙрдЗрдВрдЯрд▓рд╛ рд╕рд╛рдВрдЧрддреЗ

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд░ рдЪрд╛рд▓рддреЛ рдЯреАрд╕реАрдкреА / рдЖрдпрдкреА.

рдПрд░рд▓рд╛рдВрдЧ рдмрджреНрджрд▓ рдереЛрдбрдХреНрдпрд╛рдд

рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдпреЗрдереЗ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрд╣реЗ GitHub. рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ RabbitMQ-рд╕рд░реНрд╡реНрд╣рд░ рдЖрдзрд╛рд░реАрдд рдЕрд░реНрд▓рдВрдЧ рдЖрдгрд┐ рдмреАрдо.

Erlang рдХрдВрдкрдиреАрдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ Ericsson 1980 рдЪреНрдпрд╛ рджрд╢рдХрд╛рдЪреНрдпрд╛ рдордзреНрдпрд╛рдд 99,999% рдЕрдкрдЯрд╛рдЗрдо рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рд╡рд┐рддрд░рд┐рдд, рджреЛрд╖-рд╕рд╣рд┐рд╖реНрдгреБ, рд░рд┐рдЕрд▓-рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рдореНрд╣рдгреВрди. Erlang рд╡рд┐рд╡рд┐рдз рдЙрджреНрдпреЛрдЧ рдЖрдгрд┐ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдЙрджрд╛. WhatsApp. рдЖрдкрдг рд▓реЗрдЦрд╛рдд рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ WhatsApp рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рдЬреЗ Facebook рдиреЗ $19 рдмрд┐рд▓рд┐рдпрди рдордзреНрдпреЗ рд╡рд┐рдХрдд рдШреЗрддрд▓реЗ

RabbitMQ рдмрджреНрджрд▓ рдереЛрдбрдХреНрдпрд╛рдд

рд╕рд╕рд╛ MQ рдПрдХ рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╕рдВрджреЗрд╢ рджрд▓рд╛рд▓ рдЖрд╣реЗ. рд╣реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдореВрд▓рднреВрдд рддрддреНрддреНрд╡рд╛рдВрд╕рд╣ рд╕рдВрджреЗрд╢рд╛рдВрдирд╛ рд░реВрдЯ рдХрд░рддреЗ рдПрдордХреНрдпреВрдкреА рдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рддрдкрд╢реАрд▓. RabbitMQ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдгрд┐ рдкреВрд░рдХ AMQP.

рдордзреАрд▓ рд╕рдВрджреЗрд╢рди рдореЙрдбреЗрд▓рдЪреА рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ RabbitMQ рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ producer (рдкреНрд░рдХрд╛рд╢рдХ) рдереЗрдЯ рд░рд╛рдВрдЧреЗрдд рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рдд рдирд╛рд╣реА. рдЦрд░рдВ рддрд░, рдЖрдгрд┐ рдмрд░реНтАНрдпрд╛рдЪрджрд╛, рдкреНрд░рдХрд╛рд╢рдХрд╛рд▓рд╛ рд╣реЗ рджреЗрдЦреАрд▓ рдорд╛рд╣рд┐рдд рдирд╕рддреЗ рдХреА рд╕рдВрджреЗрд╢ рдХреЛрдгрддреНрдпрд╛рд╣реА рд░рд╛рдВрдЧреЗрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓ рдХреА рдирд╛рд╣реА.

рддреНрдпрд╛рдРрд╡рдЬреА, рдкреНрд░рдХрд╛рд╢рдХ рдХреЗрд╡рд│ рдПрдХреНрд╕рдЪреЗрдВрдЬрд▓рд╛ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡реВ рд╢рдХрддреЛ. рдПрдХреАрдХрдбреЗ, рдПрдХреНрд╕рдЪреЗрдВрдЬрд▓рд╛ рдкреНрд░рдХрд╛рд╢рдХрд╛рдВрдХрдбреВрди рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛рдд рдЖрдгрд┐ рджреБрд╕рд░реАрдХрдбреЗ, рддреЗ рддреНрдпрд╛рдВрдирд╛ рд░рд╛рдВрдЧреЗрдд рдкрд╛рдард╡рддреЗ. рдПрдХреНрд╕рдЪреЗрдВрдЬрд▓рд╛ рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рд╕рдВрджреЗрд╢рд╛рдЪреЗ рдиреЗрдордХреЗ рдХрд╛рдп рдХрд░рд╛рд╡реЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреЗ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╛рдВрдЧреЗрдд рдЬреЛрдбрд▓реЗ рдЬрд╛рд╡реЗ рдХрд╛? рддреЗ рдПрдХрд╛рдзрд┐рдХ рд░рд╛рдВрдЧрд╛рдВрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЬрд╛рд╡реЗ рдХрд╛? рдХрд┐рдВрд╡рд╛ рд╕рдВрджреЗрд╢рд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. рдПрд░реНрд▓рд╛рдВрдЧ, рдПрдПрдордХреНрдпреВрдкреА

рдереЛрдбрдХреНрдпрд╛рдд рдХрд╛рдо RabbitMQ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

  1. рдкреНрд░рдХрд╛рд╢рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдХреНрд╕рдЪреЗрдВрдЬрд▓рд╛ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рддреЛ
  2. рдПрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ, рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рддреЛ рдЖрдгрд┐ рд░рд╛рдВрдЧреЗрддреАрд▓ рдмрдВрдзрдирдХрд╛рд░рдХ рдирд┐рдпрдорд╛рдВрдиреБрд╕рд╛рд░ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рд░рд╛рдВрдЧреЗрдд рддреЛ рдорд╛рд░реНрдЧрд╕реНрде рдХрд░рддреЛ.
  3. рд░рд╛рдВрдЧ рдпрд╛ рд╕рдВрджреЗрд╢рд╛рдЪрд╛ рд╕рдВрджрд░реНрдн рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ. рд╕рдВрджреЗрд╢ рд╕реНрд╡рддрдГ RAM рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рдбрд┐рд╕реНрдХрд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ
  4. рдЧреНрд░рд╛рд╣рдХ рд░рд╛рдВрдЧреЗрддреВрди рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рд╕рд░реНрд╡реНрд╣рд░ рджреБрд╡реНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╕рдВрджреЗрд╢рд╛рдЪреА рдПрдХ рдкреНрд░рдд рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдкрд╛рдард╡рддреЛ.
  5. рдЧреНрд░рд╛рд╣рдХрд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЛ рдЖрдгрд┐ рдмреНрд░реЛрдХрд░рд▓рд╛ рдкреБрд╖реНрдЯреАрдХрд░рдг рдкрд╛рдард╡рддреЗ
  6. рдмреНрд░реЛрдХрд░, рдкреБрд╖реНрдЯреАрдХрд░рдг рдорд┐рд│рд╛рд▓реНрдпрд╛рд╡рд░, рд░рд╛рдВрдЧреЗрддреВрди рд╕рдВрджреЗрд╢рд╛рдЪреА рдПрдХ рдкреНрд░рдд рдХрд╛рдвреВрди рдЯрд╛рдХрддреЛ. рдирдВрддрд░ рд░реЕрдо рдЖрдгрд┐ рдбрд┐рд╕реНрдХрдордзреВрди рд╣рдЯрд╡рддреЗ

рдЬрдирддрд╛ рд╕рд░рдХрд╛рд░рдЪреНрдпрд╛

рдкреНрд░рдХреНрд░рд┐рдпрд╛ RPC (рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕рд╕рд╣ рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдВрдирд╛ рдЕрдзреЛрд░реЗрдЦрд┐рдд рдХрд░рддреЗ RabbitMQ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рд╣ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдЕрдЯреАрдВрдмрджреНрджрд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░реНрдЪрд╛ RabbitMQ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ RPC. рд╣рд╛ рдХреНрд░рдо рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рд╡рд░, RabbitMQ рдХреНрд▓рд╛рдпрдВрдЯрдХрдбреВрди рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЕрд╕реЗрд▓:

RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. рдПрд░реНрд▓рд╛рдВрдЧ, рдПрдПрдордХреНрдпреВрдкреА

рддрд╕реЗрдЪ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдордзреНрдпреЗ AMQP рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рджреЛрдиреНрд╣реА рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░реВ рд╢рдХрддрд╛рдд. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдХреНрд▓рд╛рдпрдВрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЗ. рдЖрдЬреНрдЮрд╛ рд╡рд░реНрдЧ рдЖрдгрд┐ рдкрджреНрдзрддреА рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Connection.Start - рдкрджреНрдзрдд рдХреЙрд▓ Start рд╡рд░реНрдЧ Connection.

рдХрдиреЗрдХреНрд╢рди рдЖрдгрд┐ рдЪреЕрдиреЗрд▓

рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рджрд░рдореНрдпрд╛рди рдЕрд╢рд╛ рдорд╛рд╣рд┐рддреАрдЪреНрдпрд╛ рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдгрд╕рд╛рдареА, рдЪреЕрдиреЗрд▓. рдЖрдд рдЪреЕрдиреЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди. рдкреНрд░рддреНрдпреЗрдХ рдЪреЕрдиреЗрд▓ рдЗрддрд░ рд╡рд╛рд╣рд┐рдиреНрдпрд╛рдВрдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рдХрд░рдгрд╛рдд, рдкреНрд░рддрд┐рд╕рд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреБрдвреАрд▓ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА.

рд╕рдорд╛рдВрддрд░ рдЖрджреЗрд╢ рдкрд╛рдард╡рд┐рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдЪреЕрдиреЗрд▓ рдЙрдШрдбрд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓. рдкреНрд░рддреНрдпреЗрдХ рдЪреЕрдиреЗрд▓ рд╕реНрд╡рддрдВрддреНрд░ рддрдпрд╛рд░ рдХрд░рддреЛ Erlang рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХрд╛ рдХрдиреЗрдХреНрд╢рдирдордзреНрдпреЗ рдЕрдиреЗрдХ рдЪреЕрдиреЗрд▓ рдЕрд╕реВ рд╢рдХрддрд╛рдд (рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ). рдкреНрд░рддреНрдпреЗрдХ рдЪреЕрдиреЗрд▓рд╕рд╛рдареА рдореЗрдорд░реАрдордзреНрдпреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдЖрдгрд┐ рд╡рд╕реНрддреВ рдЕрд╕рддрд╛рдд. рдореНрд╣рдгреВрди, рдХрдиреЗрдХреНрд╢рдирдордзреНрдпреЗ рдЬрд┐рддрдХреЗ рдЕрдзрд┐рдХ рдЪреЕрдиреЗрд▓ рдЖрд╣реЗрдд, рддрд┐рддрдХреЗ RabbitMQ рдЕрдзрд┐рдХ рдореЗрдорд░реА рд╡рд╛рдкрд░рддреЗ рдЕрд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

RabbitMQ. рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп. рдПрд░реНрд▓рд╛рдВрдЧ, рдПрдПрдордХреНрдпреВрдкреА

рд╡рд╛рдкрд░реВрди рдХрдиреЗрдХреНрд╢рди рдЖрдгрд┐ рдЪреЕрдиреЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдПрдХ рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг 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 
}

рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рдирд╡реАрди рдХрдиреЗрдХреНрд╢рди рдЙрдШрдбрдгреНрдпрд╛рд╕ рдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЬреЛрд░рджрд╛рд░рдкрдгреЗ рдкрд░рд╛рд╡реГрддреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЙрдЪреНрдЪ рдЦрд░реНрдЪ рд╣реЛрдК рд╢рдХрддреЗ. рдЪреЕрдиреЗрд▓ рджреЗрдЦреАрд▓ рдХрд╛рдпрдо рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд, рдкрд░рдВрддреБ рдЕрдиреЗрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рддреНрд░реБрдЯреАрдВрдореБрд│реЗ рдЪреЕрдиреЗрд▓ рдмрдВрдж рд╣реЛрддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдЪреЕрдиреЗрд▓рдЪреЗ рдЖрдпреБрд╖реНрдп рдХрдиреЗрдХреНрд╢рдирдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рдХрдореА рдЕрд╕реВ рд╢рдХрддреЗ.

RabbitMQ рдХреБрдареЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ?

рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕рдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ AMQP рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдордзреНрдпреЗ RabbitMQ рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрд╡рд╛рдж рд╕реЗрд╡рд╛ рджрд░рдореНрдпрд╛рди.

рд╕рдВрджрд░реНрднрд╛рдд IIOT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ AMQP рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдордзреНрдпреЗ RabbitMQ рд╕рд░реНрд╡реНрд╣рд░ (рд╕рд░реНрд╡реНрд╣рд░-рд╕рд░реНрд╡реНрд╣рд░) рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдкреНрд▓рдЧрдЗрди рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд╛ MQTT рдкреНрд▓рдЧрдЗрди RabbitMQ рдЬреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ рдПрдордХреНрдпреВрдЯреАрдЯреА рдХрдореА-рд╕реНрдкреАрдб, рдЙрдЪреНрдЪ-рд╡рд┐рд▓рдВрдм рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╕реЗрдиреНрд╕рд░ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдпреЗрдереЗ рд╕реВрдЪреАрдмрджреНрдз рдЖрд╣реЗ рдкреНрд░рдХрд▓реНрдк рд╡реЗрдмрд╕рд╛рдЗрдЯ).

рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд рдЖрдкрдг рдПрдХреНрд╕рдЪреЗрдВрдЬреЗрд╕ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВ.

рд╕рдВрджрд░реНрдн

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛