เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. Erlang, AMQP

เชถเซเชญ เชฌเชชเซ‹เชฐ, เชนเซ‡เชฌเชฐ! เชนเซเช‚ เชœเซเชžเชพเชจเชจเซ€ เชชเชพเช เซเชฏเชชเซเชธเซเชคเช•-เชธเช‚เชฆเชฐเซเชญ เชชเซเชธเซเชคเช• เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เชœเซ‡ เชฎเซ‡เช‚ เชเช•เชคเซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡ RabbitMQ เช…เชจเซ‡ เชŸเซ‚เช‚เช•เซ€ เชญเชฒเชพเชฎเชฃเซ‹ เช…เชจเซ‡ เชคเชพเชฐเชฃเซ‹ เชฎเชพเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชค เช•เชฐเซ‹.

เชธเชฎเชพเชตเชฟเชทเซเชŸเซ‹เชจเซเช‚ เช•เซ‹เชทเซเชŸเช•

  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. Erlang, AMQP เช…เชจเซ‡ RPC
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 2. เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเซ‡ เชธเชฎเชœเชตเซเช‚
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 3. เช•เชคเชพเชฐ เช…เชจเซ‡ เชฌเช‚เชงเชจเชจเซ‡ เชธเชฎเชœเชตเซเช‚
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 4. เชธเช‚เชฆเซ‡เชถเชพเช“ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเซเชธ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเซเช‚
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 5: เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเช•เชพเชถเชจ เช…เชจเซ‡ เชตเชชเชฐเชพเชถ เช•เชพเชฎเช—เซ€เชฐเซ€
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 6. เชซเซ‡เชกเชฐเซ‡เชถเชจ เช…เชจเซ‡ เชชเชพเชตเชกเซ‹ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 7. เช•เชจเซ‡เช•เซเชถเชจ เช…เชจเซ‡ เชšเซ‡เชจเชฒ เชตเชฟเชถเซ‡เชจเซ€ เชตเชฟเช—เชคเซ‹
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 8. .NET เชฎเชพเช‚ RabbitMQ
  • เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 9. เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—

AMQP เชตเชฟเชถเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚

AMQP (เชเชกเชตเชพเชจเซเชธเซเชก เชฎเซ‡เชธเซ‡เชœ เช•เซเชฏเซเช‡เช‚เช— เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ) เช เชธเชฟเชธเซเชŸเชฎเชจเชพ เช˜เชŸเช•เซ‹ เชตเชšเซเชšเซ‡ เชธเช‚เชฆเซ‡เชถเชพ เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชเช• เช“เชชเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช›เซ‡. เชฎเซ‚เชณเชญเซ‚เชค เชตเชฟเชšเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชธเชฌเชธเชฟเชธเซเชŸเชฎเซเชธ (เช…เชฅเชตเชพ เชธเซเชตเชคเช‚เชคเซเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ) AMQP เชฌเซเชฐเซ‹เช•เชฐ เชฆเซเชตเชพเชฐเชพ เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เช†เชช-เชฒเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เชฐเชพเช‰เชŸเซ€เช‚เช— เช•เชฐเซ‡ เช›เซ‡, เชธเช‚เชญเชตเชคเชƒ เชกเชฟเชฒเชฟเชตเชฐเซ€เชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชธเช‚เชฆเซ‡เชถเชพเชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‡ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‡ เช›เซ‡.

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ AMQP เชคเซเชฐเชฃ เช–เซเชฏเชพเชฒเซ‹ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡:

เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. Erlang, AMQP

  • exchange (เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซ เช…เชฅเชตเชพ เชตเชฟเชจเชฟเชฎเชฏ) - เชธเช‚เชฆเซ‡เชถเชพเช“ เชคเซ‡เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซ เชธเช‚เชฆเซ‡เชถเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเซ‡ เช›เซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เช•เชคเชพเชฐเซ‹เชฎเชพเช‚. เชคเซ‡เชฃเซ€เช เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เช•เชคเชพเชฐเชฎเชพเช‚ เชฐเซ‚เชŸ เช•เชฐเซ‡ เช›เซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชœเซ‹เชกเชพเชฃเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค (binding) เชคเซ‡เชจเซ€ เช…เชจเซ‡ เช•เชคเชพเชฐ เชตเชšเซเชšเซ‡
  • queue (เช•เชคเชพเชฐ) - เชกเชฟเชธเซเช• เชชเชฐ เช…เชฅเชตเชพ RAM เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฎเชพเชณเช–เซเช‚ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชฒเชฟเช‚เช•เซเชธ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชจเช•เชฒเซ‹ เช†เชชเซ‡ เช›เซ‡ consumers (เช—เซเชฐเชพเชนเช•เซ‹ เชฎเชพเชŸเซ‡)
  • binding (เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ) - เชเช• เชจเชฟเชฏเชฎ เชœเซ‡ เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซเชจเซ‡ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช† เชธเช‚เชฆเซ‡เชถเชพเช“ เช•เชˆ เช•เชคเชพเชฐเชฎเชพเช‚ เชœเชตเชพ เชœเซ‹เชˆเช

เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชŸเซ‹เชš เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡ เชŸเซ€เชธเซ€เชชเซ€ / เช†เชˆเชชเซ€.

เชเชฐเซเชฒเชพเช‚เช— เชตเชฟเชถเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‹ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช›เซ‡ GitHub. เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ-เชธเชฐเซเชตเชฐ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชเชฐเซเชฒเชพเช‚เช— เช…เชจเซ‡ เชฌเซ€เชฎ.

Erlang เช•เช‚เชชเชจเซ€ เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชฟเชค Ericsson 1980 เชจเชพ เชฆเชพเชฏเช•เชพเชจเชพ เชฎเชงเซเชฏเชฎเชพเช‚ 99,999% เช…เชชเชŸเชพเช‡เชฎเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เช…เชฐเชœเซ€เช“ เชฎเชพเชŸเซ‡ เชตเชฟเชคเชฐเชฟเชค, เช–เชพเชฎเซ€-เชธเชนเชฟเชทเซเชฃเซ, เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชธเชฟเชธเซเชŸเชฎ เชคเชฐเซ€เช•เซ‡. Erlang เชตเชฟเชตเชฟเชง เช‰เชฆเซเชฏเซ‹เช—เซ‹ เช…เชจเซ‡ เช†เชงเซเชจเชฟเช• เช•เชพเชฐเซเชฏเช•เซเชฐเชฎเซ‹เชฎเชพเช‚ เชตเชชเชฐเชพเชฏ เช›เซ‡, เชฆเชพ.เชค. WhatsApp. เชคเชฎเซ‡ เชฒเซ‡เช–เชฎเชพเช‚ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ WhatsApp เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ, เชœเซ‡เชจเซ‡ Facebookเช $19 เชฌเชฟเชฒเชฟเชฏเชจเชฎเชพเช‚ เช–เชฐเซ€เชฆเซเชฏเซเช‚

RabbitMQ เชตเชฟเชถเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚

เชฐเซ‡เชฌเชฟเชŸเชฎเซเชฏเซเช•เซเชฏเซ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชฎเซ‡เชธเซ‡เชœ เชฌเซเชฐเซ‹เช•เชฐ เช›เซ‡. เชคเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเชพ เชคเชฎเชพเชฎ เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹ เชธเชพเชฅเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชฐเซ‚เชŸ เช•เชฐเซ‡ เช›เซ‡ AMQP เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹. RabbitMQ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซ‚เชฐเช• เชฌเชจเชพเชตเซ‡ เช›เซ‡ AMQP.

เชฎเชพเช‚ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชฎเซ‹เชกเชฒเชจเซ‹ เชฎเซเช–เซเชฏ เชตเชฟเชšเชพเชฐ RabbitMQ เชตเชธเซเชคเซ เช›เซ‡ producer (เชชเซเชฐเช•เชพเชถเช•) เชธเซ€เชงเชพ เช•เชคเชพเชฐเชฎเชพเช‚ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเชคเชพ เชจเชฅเซ€. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เช…เชจเซ‡ เช˜เชฃเซ€ เชตเชพเชฐ, เชชเซเชฐเช•เชพเชถเช•เชจเซ‡ เช เชชเชฃ เช–เชฌเชฐ เชนเซ‹เชคเซ€ เชจเชฅเซ€ เช•เซ‡ เชธเช‚เชฆเซ‡เชถ เช•เซ‹เชˆเชชเชฃ เช•เชคเชพเชฐเชฎเชพเช‚ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช•เซ‡ เชจเชนเซ€เช‚.

เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, เชชเซเชฐเช•เชพเชถเช• เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเซ‡ เชฎเชพเชคเซเชฐ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡ เช›เซ‡. เชเช• เชคเชฐเชซ, เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซเชฐเช•เชพเชถเช•เซ‹ เชคเชฐเชซเชฅเซ€ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซ€ เชคเชฐเชซ, เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เชคเชพเชฐเซ‹เชฎเชพเช‚ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเซ‡ เช–เชฌเชฐ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช เช•เซ‡ เชคเซ‡เชจเซ‡ เชœเซ‡ เชฎเซ‡เชธเซ‡เชœ เชฎเชณเซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชถเซเช‚ เช•เชฐเชตเซเช‚. เชถเซเช‚ เชคเซ‡เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เช•เชคเชพเชฐเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชœเซ‹เชˆเช? เชถเซเช‚ เชคเซ‡เชจเซ‡ เชฌเชนเซเชตเชฟเชง เช•เชคเชพเชฐเซ‹เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชœเซ‹เชˆเช? เช…เชฅเชตเชพ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เช…เชตเช—เชฃเชตเซ‹ เชœเซ‹เชˆเช.

เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. Erlang, AMQP

เชธเช‚เช•เซเชทเชฟเชชเซเชค เช•เชพเชฎ RabbitMQ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชตเชฐเซเชฃเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  1. เชชเซเชฐเช•เชพเชถเช• เชšเซ‹เช•เซเช•เชธ เชตเชฟเชจเชฟเชฎเชฏเชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡
  2. เชเช• เชตเชฟเชจเชฟเชฎเชฏ, เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชจเซ‡ เช…เชจเซ‡ เช•เชคเชพเชฐ เชตเชšเซเชšเซ‡เชจเชพ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เชจเชฟเชฏเชฎเซ‹ เช…เชจเซเชธเชพเชฐ เชคเซ‡เชจเซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เช•เชคเชพเชฐเซ‹เชฎเชพเช‚ เชฒเชˆ เชœเชพเชฏ เช›เซ‡.
  3. เช•เชคเชพเชฐ เช† เชธเช‚เชฆเซ‡เชถเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชธเช‚เชฆเซ‡เชถ เชชเซ‹เชคเซ‡ RAM เช…เชฅเชตเชพ เชกเชฟเชธเซเช• เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡
  4. เชเช•เชตเชพเชฐ เช—เซเชฐเชพเชนเช• เช•เชคเชพเชฐเชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชฅเชˆ เชœเชพเชฏ, เชธเชฐเซเชตเชฐ เชฒเชฟเช‚เช• เชฆเซเชตเชพเชฐเชพ เชธเช‚เชฆเซ‡เชถเชจเซ€ เชจเช•เชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.
  5. เช—เซเชฐเชพเชนเช• เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฌเซเชฐเซ‹เช•เชฐเชจเซ‡ เชชเซเชทเซเชŸเชฟ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡
  6. เชฌเซเชฐเซ‹เช•เชฐ, เชชเซเชทเซเชŸเชฟ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช•เชคเชพเชฐเชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถเชจเซ€ เชจเช•เชฒ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชชเช›เซ€ RAM เช…เชจเซ‡ เชกเชฟเชธเซเช•เชฎเชพเช‚เชฅเซ€ เช•เชพเชขเซ€ เชจเชพเช–เซ‡ เช›เซ‡

เช†เชฐ.เชชเซ€.เชธเซ€.

ะŸั€ะพั†ะตัั RPC (เชฆเซ‚เชฐเชธเซเชฅ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เซ‰เชฒ) เชจเซเชฏเซเช•เซเชฒเชฟเชฏเชธ เชธเชพเชฅเซ‡ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเช“ เช…เช‚เชคเชฐเซเช—เชค RabbitMQ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเชพเชฅเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ€ เชถเชฐเชคเซ‹ เชตเชฟเชถเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชšเชฐเซเชšเชพเช“ RabbitMQ, เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ RPC. เชเช•เชตเชพเชฐ เช† เช•เซเชฐเชฎ เชชเซ‚เชฐเซเชฃ เชฅเชˆ เชœเชพเชฏ, RabbitMQ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเซเชตเซ€เช•เชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชนเชถเซ‡:

เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. Erlang, AMQP

เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชฎเชพเช‚ เชชเชฃ AMQP เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชฌเช‚เชจเซ‡ เช†เชฆเซ‡เชถเซ‹ เช†เชชเซ€ เชถเช•เซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เช†เชฆเซ‡เชถเซ‹ เชตเชฐเซเช—เซ‹ เช…เชจเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡, Connection.Start - เชชเชฆเซเชงเชคเชฟ เช•เซ‰เชฒ Start เชตเชฐเซเช— Connection.

เช•เชจเซ‡เช•เซเชถเชจ เช…เชจเซ‡ เชšเซ‡เชจเชฒเซ‹

เช•เซเชฒเชพเชฏเชจเซเชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡ เช†เชตเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ€ เช†เชช-เชฒเซ‡ เชฎเชพเชŸเซ‡, เชšเซ‡เชจเชฒเซ‹. เชšเซ‡เชจเชฒเซ‹ เช…เช‚เชฆเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชšเซ‹เช•เซเช•เชธ เชœเซ‹เชกเชพเชฃ. เชฆเชฐเซ‡เช• เชšเซ‡เชจเชฒ เช…เชจเซเชฏ เชšเซ‡เชจเชฒเซ‹เชฅเซ€ เช…เชฒเช— เช›เซ‡. เชธเชฟเช‚เช•เซเชฐเชจเชธ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช†เช—เชฒเชพ เช†เชฆเซ‡เชถเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชจเชฅเซ€.

เชธเชฎเชพเช‚เชคเชฐ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชฅเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช˜เชฃเซ€ เชšเซ‡เชจเชฒเซ‹ เช–เซ‹เชฒเชตเซ€ เชชเชกเชถเซ‡. เชฆเชฐเซ‡เช• เชšเซ‡เชจเชฒ เช…เชฒเช— เชฌเชจเชพเชตเซ‡ เช›เซ‡ Erlang เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชเช• เช•เชจเซ‡เช•เซเชถเชจเชฎเชพเช‚ เชฌเชนเซเชตเชฟเชง เชšเซ‡เชจเชฒเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (เชฎเชฒเซเชŸเซ€เชชเซเชฒเซ‡เช•เซเชธเซ€เช‚เช—). เชฆเชฐเซ‡เช• เชšเซ‡เชจเชฒ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ เชฎเชพเชณเช–เชพเช‚ เช…เชจเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เช›เซ‡. เชคเซ‡เชฅเซ€, เช•เชจเซ‡เช•เซเชถเชจเชจเซ€ เช…เช‚เชฆเชฐ เชœเซ‡เชŸเชฒเซ€ เชตเชงเซ เชšเซ‡เชจเชฒเซ‹ เช›เซ‡, เชคเซ‡ RabbitMQ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€ เชตเชพเชชเชฐเซ‡ เช›เซ‡ เช†เชตเชพ เชœเซ‹เชกเชพเชฃเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชฐเซ‡เชฌเชฟเชŸเชเชฎเช•เซเชฏเซ. เชญเชพเช— 1. เชชเชฐเชฟเชšเชฏ. 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 เชœเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช›เซ‡ เชเชฎเช•เซเชฏเซเชŸเซ€เชŸเซ€ เชธเซ‡เชจเซเชธเชฐ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡ เชฒเซ‹-เชธเซเชชเซ€เชก, เชนเชพเช‡-เชฒเซ‡เชŸเชจเซเชธเซ€ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเซเชธเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ (เชธเชฎเชฐเซเชฅเชฟเชค เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ เช…เชนเซ€เช‚ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เช›เซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชตเซ‡เชฌเชธเชพเช‡เชŸ).

เชนเชตเซ‡ เชชเช›เซ€เชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเซ‹เชจเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฎเชœเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เชถเซเช‚.

เชธเช‚เชฆเชฐเซเชญเซ‹

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹