RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP

рд╢реБрдн рджрд┐рдЙрдБрд╕реЛ, Habr! рдо рдЬреНрдЮрд╛рдирдХреЛ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ-рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрдХ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдЬреБрди рдореИрд▓реЗ рд╕рдВрдЧреНрд░рд╣ рдЧрд░реНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реЗрдХреЛ рдЫреБ RabbitMQ рд░ рдЫреЛрдЯреЛ рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рд░ рдирд┐рд╖реНрдХрд░реНрд╖рд╣рд░реВрдорд╛ рдЧрд╛рдврд╛ред

рд╕рд╛рдордЧреНрд░реАрдХреЛ рддрд╛рд▓рд┐рдХрд╛

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

AMQP рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫреЛрдЯрдХрд░реАрдорд╛

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

рдкреНрд░реЛрдЯреЛрдХрд▓ AMQP рддреАрди рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рдкрд░рд┐рдЪрдп:

RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP

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

рдкреНрд░реЛрдЯреЛрдХрд▓ рдорд╛рдерд┐ рдЪрд▓реНрдЫ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА.

Erlang рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдЫреЛрдЯрдХрд░реАрдорд╛

рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдорд╛ рдЫ GitHubред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ RabbitMQ-рд╕рд░реНрднрд░ рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдПрд░рд▓рд╛lang рд░ рдмреАрдоред

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

RabbitMQ рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫреЛрдЯрдХрд░реАрдорд╛

рдЦрд░рдЧреЛрд╢ MQ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рдиреНрджреЗрд╢ рдмреНрд░реЛрдХрд░ рд╣реЛред рдпрд╕рд▓реЗ рдкреНрд░реЛрдЯреЛрдХрд▓рдХрд╛ рд╕рдмреИ рдЖрдзрд╛рд░рднреВрдд рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВрд╕рдБрдЧ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдорд╛рд░реНрдЧ рдЧрд░реНрджрдЫ AMQP рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реБ. RabbitMQ рдкреНрд░реЛрдЯреЛрдХрд▓ рд▓рд╛рдЧреВ рд░ рдкреВрд░рдХ AMQP.

рдорд╛ рд╕рдиреНрджреЗрд╢ рдореЛрдбреЗрд▓ рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ RabbitMQ рдХреБрд░рд╛ рд╣реЛ producer (рдкреНрд░рдХрд╛рд╢рдХ) рд▓реЗ рд▓рд╛рдордорд╛ рд╕реАрдзреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрдБрджреИрдиред рд╡рд╛рд╕реНрддрд╡рдорд╛, рд░ рдкреНрд░рд╛рдпрдГ, рдкреНрд░рдХрд╛рд╢рдХрд▓рд╛рдИ рдпреЛ рдкрдирд┐ рдерд╛рд╣рд╛ рдЫреИрди рдХрд┐ рд╕рдиреНрджреЗрд╢ рдХреБрдиреИ рдкрдирд┐ рд▓рд╛рдордорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдиреЗрдЫред

рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, рдкреНрд░рдХрд╛рд╢рдХрд▓реЗ рдПрдХреНрд╕рдЪреЗрдиреНрдЬрдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдорд╛рддреНрд░ рдкрдард╛рдЙрди рд╕рдХреНрдЫред рдПрдХрд╛рддрд┐рд░, рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд▓реЗ рдкреНрд░рдХрд╛рд╢рдХрд╣рд░реВрдмрд╛рдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ, рд░ рдЕрд░реНрдХреЛрддрд░реНрдл, рдпрд╕рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рд╛рдордорд╛ рдкрдард╛рдЙрдБрдЫред рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд▓реЗ рдареНрдпрд╛рдХреНрдХреИ рдерд╛рд╣рд╛ рдкрд╛рдЙрдиреБ рдкрд░реНрдЫ рдХрд┐ рдпрд╕рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХреЛ рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рдХреЗ рдЧрд░реНрдиреЗред рдХреЗ рдпреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд╛рдордорд╛ рдердкреНрдиреБ рдкрд░реНрдЫ? рдХреЗ рдпреЛ рдзреЗрд░реИ рд▓рд╛рдорд╣рд░реВрдорд╛ рдердкреНрдиреБ рдкрд░реНрдЫ? рд╡рд╛ рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред

RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP

рдЫреЛрдЯреЛ рдХрд╛рдо RabbitMQ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

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

Rpc

рдкреНрд░рдХреНрд░рд┐рдпрд╛ RPC (рд░рд┐рдореЛрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд▓) рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рд╕рдВрдЧ рд▓рдЧрднрдЧ рд╕рдмреИ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реБ рд▓рд╛рдИ рдирд┐рд╣рд┐рдд рдЧрд░реНрджрдЫ RabbitMQред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЧреНрд░рд╛рд╣рдХрдХрд╛ рд╕рд░реНрддрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЫрд▓рдлрд▓ RabbitMQ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрд╛рдЙрдБрдЫ RPCред рдпреЛ рдХреНрд░рдо рдкреВрд░рд╛ рднрдПрдкрдЫрд┐, RabbitMQ рдЧреНрд░рд╛рд╣рдХрдмрд╛рдЯ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рддрдпрд╛рд░ рд╣реБрдиреЗрдЫ:

RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP

рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдорд╛ рдкрдирд┐ AMQP рджреБрдмреИ рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░рд▓реЗ рдЖрджреЗрд╢ рдЬрд╛рд░реА рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕рд░реНрднрд░рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрди рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫред рдЖрджреЗрд╢рд╣рд░реВ рд╡рд░реНрдЧ рд░ рд╡рд┐рдзрд┐рд╣рд░реВ рд╣реБрдиреНред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Connection.Start - рд╡рд┐рдзрд┐ рдХрд▓ Start рд╡рд░реНрдЧ Connection.

рдЬрдбрд╛рди рд░ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ

рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдмреАрдЪ рдпрд╕реНрддреЛ рдЬрд╛рдирдХрд╛рд░реА рдЖрджрд╛рди рдкреНрд░рджрд╛рди рдХреЛ рд▓рд╛рдЧреА, рдЪреНрдпрд╛рдирд▓рд╣рд░реВред рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рднрд┐рддреНрд░ рдмрдирд╛рдЗрдиреНрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрдбрд╛рдиред рдкреНрд░рддреНрдпреЗрдХ рдЪреНрдпрд╛рдирд▓ рдЕрдиреНрдп рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдмрд╛рдЯ рдЕрд▓рдЧ рдЫред рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдирднрдПрд╕рдореНрдо рдЕрд░реНрдХреЛ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫреИрдиред

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

RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP

рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрдбрд╛рди рд░ рдЪреНрдпрд╛рдирд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг 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 рдЬреБрди рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ MQTT рдХрдо-рд╕реНрдкреАрдб, рдЙрдЪреНрдЪ-рд╡рд┐рд▓рдореНрдмрддрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕реЗрдиреНрд╕рд░ рд░ рд╕рд░реНрднрд░ рдмреАрдЪ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ (рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╕реВрдЪреАрдорд╛ рд╕реВрдЪреАрдмрджреНрдз рдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ).

рдЕрд░реНрдХреЛ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд▓рд╛рдИ рдердк рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рдмреБрдЭреНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВред

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди