เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เช›เซ‡เชฒเซเชฒเชพเชฎเชพเช‚ เชฒเซ‡เช– เช…เชฎเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชถเซ€เชฒ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเชพ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชชเชพเชฏเชพเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€. เชกเซ‡เชŸเชพ เชซเซเชฒเซ‹, เชฐเชฟเชเช•เซเชŸเชฟเชต เชเชฐเซเชฒเชพเช‚เช—/เชเชฒเชฟเช•เซเชธเชฟเชฐ เชธเชฟเชธเซเชŸเชฎเซเชธ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชชเซ‡เชŸเชฐเซเชจ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเชพเชจเซ‹ เช† เชธเชฎเชฏ เช›เซ‡:

  • เชตเชฟเชจเช‚เชคเซ€-เชชเซเชฐเชคเชฟเชญเชพเชต
  • เชตเชฟเชจเช‚เชคเซ€-เชšเช‚เช•เซเชก เชชเซเชฐเชคเชฟเชญเชพเชต
  • เชตเชฟเชจเช‚เชคเซ€ เชธเชพเชฅเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ
  • เชชเซเชฐเช•เชพเชถเชฟเชค-เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹
  • เชŠเช‚เชงเซเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค-เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹
  • เช•เชพเชฐเซเชฏ เชตเชฟเชคเชฐเชฃ

SOA, MSA เช…เชจเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช—

SOA, MSA เช เชธเชฟเชธเซเชŸเชฎ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช›เซ‡ เชœเซ‡ เชฌเชฟเชฒเซเชกเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชคเซ‡เชฎเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เช†เชฆเชฟเชฎ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡.

เชนเซเช‚ เช† เช…เชฅเชตเชพ เชคเซ‡ เชธเชฟเชธเซเชŸเชฎ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เชชเซเชฐเชšเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€. เชนเซเช‚ เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชจเซ‡ เชตเซเชฏเชตเชธเชพเชฏ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เช…เชธเชฐเช•เชพเชฐเช• เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช›เซเช‚. เช…เชฎเซ‡ เช—เชฎเซ‡ เชคเซ‡ เชฆเชพเช–เชฒเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซ€เช, เชฏเซเชจเชฟเช•เซเชธ-เชตเซ‡ เชชเชฐ เชจเชœเชฐ เชฐเชพเช–เซ€เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฌเซเชฒเซ‹เช•เซเชธ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡: เชจเซเชฏเซ‚เชจเชคเชฎ เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€เชตเชพเชณเชพ เช˜เชŸเช•เซ‹, เชตเซเชฏเช•เซเชคเชฟเช—เชค เชธเช‚เชธเซเชฅเชพเช“ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ. API เชชเชฆเซเชงเชคเชฟเช“ เชเช•เชฎเซ‹ เชธเชพเชฅเซ‡ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชถเช•เซเชฏ เช•เซเชฐเชฟเชฏเชพเช“ เช•เชฐเซ‡ เช›เซ‡.

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

  • เชตเชฟเชคเชฐเชฃ.
    เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸ เชคเชฎเชพเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชชเชฐ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เช•เซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชจเชœเซ€เช•.
  • เชธเชพเชฆเช—เซ€.
    เชฌเซ‹เชˆเชฒเชฐเชชเซเชฒเซ‡เชŸ เช•เซ‹เชกเชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชธเชฐเชณเชคเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ‹.
  • เชตเชงเซ เชธเชพเชฐเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ.
    เช…เชฎเซ‡ rabbitmq เชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเชพเชคเซเชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฒ เช…เชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐเชจเซ‡ เชนเชพเชˆเชฒเชพเชˆเชŸ เช•เชฐเซ€เช เช›เซ€เช, เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ OTPเชฎเชพเช‚ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชซเชฟเชŸ เช•เชฐเซ€เช เช›เซ€เช, เช–เชฐเซเชšเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹ เช•เชฐเซ€เช เช›เซ€เช.
  • เชธเซเช—เชฎเชคเชพ.
    เชฆเชฐเซ‡เช• เชธเซ‡เชตเชพ เช˜เชฃเชพ เชตเชฟเชจเชฟเชฎเชฏ เชจเชฎเซ‚เชจเชพเช“เชจเซ‡ เชœเซ‹เชกเซ€ เชถเช•เซ‡ เช›เซ‡.
  • เชกเชฟเชเชพเช‡เชจ เชฆเซเชตเชพเชฐเชพ เชธเซเชฅเชฟเชคเชฟเชธเซเชฅเชพเชชเช•เชคเชพ.
  • เชฎเชพเชชเชจเซ€เชฏเชคเชพ.
    เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชตเชงเซ‡ เช›เซ‡. เชœเซ‡เชฎ เชœเซ‡เชฎ เชฒเซ‹เชก เชตเชงเซ‡ เช›เซ‡, เชคเชฎเซ‡ เชตเชฟเชจเชฟเชฎเชฏ เชชเซ‹เชˆเชจเซเชŸเชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฎเชถเซ€เชจเซ‹ เชชเชฐ เช–เชธเซ‡เชกเซ€ เชถเช•เซ‹ เช›เซ‹.

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

เชธเชฟเชธเซเชŸเชฎเชจเชพ เช˜เชŸเช•เซ‹ เชธเซ€เชงเชพ เช…เชฅเชตเชพ เชฌเซเชฐเซ‹เช•เชฐ เชฆเซเชตเชพเชฐเชพ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชชเชฐเชฟเชชเซเชฐเซ‡เช•เซเชทเซเชฏเชฎเชพเช‚, เชฆเชฐเซ‡เช• เชธเซ‡เชตเชพเชจเชพ เชœเซ€เชตเชจเชจเชพ เช˜เชฃเชพ เชคเชฌเช•เซเช•เชพเช“ เช›เซ‡:

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

เชคเซ‡ เชเช•เชฆเชฎ เชœเชŸเชฟเชฒ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‹เชก เชเชŸเชฒเซ‹ เชกเชฐเชพเชฎเชฃเซ‹ เชจเชฅเซ€. เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชธเชพเชฅเซ‡เชจเชพ เช•เซ‹เชก เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€ เชจเชฎเซ‚เชจเชพเช“เชจเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชเช•เซเชธเชšเซ‡เชจเซเชœเซ‹

เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸ เช เชเช• เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช›เซ‡ เชœเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเชฎเชพเช‚ เช˜เชŸเช•เซ‹ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเชพ เชคเชฐเซเช•เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชจเซ€เชšเซ‡ เชชเซเชฐเชธเซเชคเซเชค เชคเชฎเชพเชฎ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚, เช˜เชŸเช•เซ‹ เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซเช“ เชฆเซเชตเชพเชฐเชพ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซเช‚ เชธเช‚เชฏเซ‹เชœเชจ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชธเช‚เชฆเซ‡เชถ เชตเชฟเชจเชฟเชฎเชฏ เชชเซ‡เชŸเชฐเซเชจ (MEPs)

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

เชตเชฟเชจเช‚เชคเซ€-เชชเซเชฐเชคเชฟเชธเชพเชฆ เช…เชฅเชตเชพ RPC

เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเชจเซ‡ เชฌเซ€เชœเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ RPC เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชฎเชพเชจ เชจเซ‹เชก เชชเชฐ เชšเชพเชฒเซ€ เชฐเชนเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชฅเชตเชพ เช…เชฒเช— เช–เช‚เชก เชชเชฐ เชธเซเชฅเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชจเซ€เชšเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชฆเซเชตเชพเชฐเชพ เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡เชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ‹ เช†เช•เซƒเชคเชฟ เช›เซ‡.

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชธเซเชฎเซ‡เชณ เชนเซ‹เชตเชพเชฅเซ€, เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœเชจเซ‡ 2 เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

  1. เชตเชฟเชจเช‚เชคเซ€ เชธเชฌเชฎเชฟเชŸ เช•เชฐเซ‹

    messaging:request(Exchange, ResponseMatchingTag, RequestDefinition, HandlerProcess).

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

  2. เชชเซเชฐเชคเชฟเชญเชพเชต เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

    handle_info(#'$msg'{exchange = EXCHANGE, tag = ResponseMatchingTag,message = ResponsePayload}, State)

    เชฐเชฟเชธเซเชชเซ‹เชจเซเชธเชชเซ‡เชฒเซ‹เชก - เชธเชฐเซเชตเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ.

เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ 2 เชคเชฌเช•เซเช•เชพเช“ เชชเชฃ เชถเชพเชฎเซ‡เชฒ เช›เซ‡:

  1. เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช
  2. เชชเซเชฐเชพเชชเซเชค เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เชšเชพเชฒเซ‹ เช† เชจเชฎเซ‚เชจเชพเชจเซ‡ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชธเชฎเชœเชพเชตเซ€เช. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช†เชชเชฃเซ‡ เชเช• เชธเชฐเชณ เชธเซ‡เชตเชพ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชเช• เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏ เชชเชฆเซเชงเชคเชฟ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เชธเชฐเซเชตเชฐ เช•เซ‹เชก

เชšเชพเชฒเซ‹ api.hrl เชฎเชพเช‚ เชธเชฐเซเชตเชฟเชธ API เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เช:

%% =====================================================
%%  entities
%% =====================================================
-record(time, {
  unixtime :: non_neg_integer(),
  datetime :: binary()
}).

-record(time_error, {
  code :: non_neg_integer(),
  error :: term()
}).

%% =====================================================
%%  methods
%% =====================================================
-record(time_req, {
  opts :: term()
}).
-record(time_resp, {
  result :: #time{} | #time_error{}
}).

เชšเชพเชฒเซ‹ เชธเซ‡เชตเชพ เชจเชฟเชฏเช‚เชคเซเชฐเช•เชจเซ‡ time_controller.erl เชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เช

%% ะ’ ะฟั€ะธะผะตั€ะต ะฟะพะบะฐะทะฐะฝ ั‚ะพะปัŒะบะพ ะทะฝะฐั‡ะธะผั‹ะน ะบะพะด. ะ’ัั‚ะฐะฒะธะฒ ะตะณะพ ะฒ ัˆะฐะฑะปะพะฝ gen_server ะผะพะถะฝะพ ะฟะพะปัƒั‡ะธั‚ัŒ ั€ะฐะฑะพั‡ะธะน ัะตั€ะฒะธั.

%% ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธั gen_server
init(Args) ->
  %% ะฟะพะดะบะปัŽั‡ะตะฝะธะต ะบ ั‚ะพั‡ะบะต ะพะฑะผะตะฝะฐ
  messaging:monitor_exchange(req_resp, ?EXCHANGE, default, self())
  {ok, #{}}.

%% ะพะฑั€ะฐะฑะพั‚ะบะฐ ัะพะฑั‹ั‚ะธั ะฟะพั‚ะตั€ะธ ัะฒัะทะธ ั ั‚ะพั‡ะบะพะน ะพะฑะผะตะฝะฐ. ะญั‚ะพ ะถะต ัะพะฑั‹ั‚ะธะต ะฟั€ะธั…ะพะดะธั‚, ะตัะปะธ ั‚ะพั‡ะบะฐ ะพะฑะผะตะฝะฐ ะตั‰ะต ะฝะต ะทะฐะฟัƒัั‚ะธะปะฐััŒ.
handle_info(#exchange_die{exchange = ?EXCHANGE}, State) ->
  erlang:send(self(), monitor_exchange),
  {noreply, State};

%% ะพะฑั€ะฐะฑะพั‚ะบะฐ API
handle_info(#time_req{opts = _Opts}, State) ->
  messaging:response_once(Client, #time_resp{
result = #time{ unixtime = time_utils:unixtime(now()), datetime = time_utils:iso8601_fmt(now())}
  });
  {noreply, State};

%% ะทะฐะฒะตั€ัˆะตะฝะธะต ั€ะฐะฑะพั‚ั‹ gen_server
terminate(_Reason, _State) ->
  messaging:demonitor_exchange(req_resp, ?EXCHANGE, default, self()),
  ok.

เช—เซเชฐเชพเชนเช• เช•เซ‹เชก

เชธเซ‡เชตเชพเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชฎเชพเช‚ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชตเชฟเชจเช‚เชคเซ€ API เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

case messaging:request(?EXCHANGE, tag, #time_req{opts = #{}}, self()) of
    ok -> ok;
    _ -> %% repeat or fail logic
end

เชตเชฟเชคเชฐเชฟเชค เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚, เช˜เชŸเช•เซ‹เชจเซเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช–เซ‚เชฌ เชœ เช…เชฒเช— เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชธเชฎเชฏเซ‡, เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชนเชœเซ€ เชถเชฐเซ‚ เชฅเชˆ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚, เช…เชฅเชตเชพ เชธเซ‡เชตเชพ เชจเชฟเชฏเช‚เชคเซเชฐเช• เชตเชฟเชจเช‚เชคเซ€เชจเซ€ เชธเซ‡เชตเชพ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชจเชนเซ€เช‚ เชนเซ‹เชฏ. เชคเซ‡เชฅเซ€, เช…เชฎเชพเชฐเซ‡ เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชชเซเชฐเชคเชฟเชญเชพเชต เชคเชชเชพเชธเชตเชพเชจเซ€ เช…เชจเซ‡ เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เช•เซ‡เชธเชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฎเซ‹เช•เชฒเซเชฏเชพ เชชเช›เซ€, เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเซ‡เชตเชพ เชคเชฐเชซเชฅเซ€ เชชเซเชฐเชคเชฟเชธเชพเชฆ เช…เชฅเชตเชพ เชญเซ‚เชฒ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡.
เชšเชพเชฒเซ‹ เชฌเช‚เชจเซ‡ เช•เซ‡เชธเซ‹ เชนเซ‡เชจเซเชกเชฒ_เช‡เชจเซเชซเซ‹เชฎเชพเช‚ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ€เช:

handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time{unixtime = Utime}}}, State) ->
  ?debugVal(Utime),
  {noreply, State};

handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time_error{code = ErrorCode}}}, State) ->
  ?debugVal({error, ErrorCode}),
  {noreply, State};

เชตเชฟเชจเช‚เชคเซ€-เชšเช‚เช•เซเชก เชชเซเชฐเชคเชฟเชญเชพเชต

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

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เชšเชพเชฒเซ‹ เชนเซเช‚ เชคเชฎเชจเซ‡ เช†เชตเชพ เช•เชฟเชธเซเชธเชพเช“เชจเชพ เช•เซ‡เชŸเชฒเชพเช• เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช†เชชเซเช‚:

  • เช˜เชŸเช•เซ‹ เชฌเชพเชˆเชจเชฐเซ€ เชกเซ‡เชŸเชพเชจเซเช‚ เชตเชฟเชจเชฟเชฎเชฏ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชซเชพเช‡เชฒเซ‹. เชชเซเชฐเชคเชฟเชญเชพเชตเชจเซ‡ เชจเชพเชจเชพ เชญเชพเช—เซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเชตเชพเชฅเซ€ เชคเชฎเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เช•เชฆเชจเซ€ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เช“เชตเชฐเชซเซเชฒเซ‹ เชŸเชพเชณเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เชฎเชณเซ‡ เช›เซ‡.
  • เชธเซ‚เชšเชฟเช“. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชเช• เชตเชฟเชถเชพเชณ เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชคเชฎเชพเชฎ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเซ€เชœเชพ เช˜เชŸเช•เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชนเซเช‚ เช† เชชเซเชฐเชคเชฟเชญเชพเชตเซ‹เชจเซ‡ เชฒเซ‹เช•เซ‹เชฎเซ‹เชŸเชฟเชต เช•เชนเซเช‚ เช›เซเช‚. เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚, 1024 MB เชจเชพ 1 เชธเช‚เชฆเซ‡เชถเชพเช“ 1 GB เชจเชพ เชเช• เชธเช‚เชฆเซ‡เชถ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเชพเชฐเชพ เช›เซ‡.

เชเชฐเซเชฒเชพเช‚เช— เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚, เช…เชฎเชจเซ‡ เชเช• เชตเชงเชพเชฐเชพเชจเซ‹ เชฒเชพเชญ เชฎเชณเซ‡ เช›เซ‡ - เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸ เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐเชจเซ‹ เชญเชพเชฐ เช˜เชŸเชพเชกเชตเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชคเชฟเชญเชพเชตเซ‹ เชคเชฐเชค เชœ เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพเชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชตเชฟเชจเช‚เชคเซ€ เชธเชพเชฅเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ

เชธเช‚เชตเชพเชฆ เชธเชฟเชธเซเชŸเชฎเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ RPC เชชเซ‡เชŸเชฐเซเชจเชฎเชพเช‚ เช† เชเช• เชฆเซเชฐเซเชฒเชญ เชซเซ‡เชฐเชซเชพเชฐ เช›เซ‡.

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เชชเซเชฐเช•เชพเชถเชฟเชค-เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹ (เชกเซ‡เชŸเชพ เชตเชฟเชคเชฐเชฃ เชตเซƒเช•เซเชท)

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

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เช† เชชเซ‡เชŸเชฐเซเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชคเซเชคเชฎ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฐเชพเชœเซเชฏเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช›เซ‡: เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชฐเชฎเชคเซ‹เชฎเชพเช‚ เชฐเชฎเชคเชจเซ€ เชฆเซเชจเชฟเชฏเชพ, เชเช•เซเชธเชšเซ‡เชจเซเชœเซ‹ เชชเชฐเชจเซ‹ เชฌเชœเชพเชฐ เชกเซ‡เชŸเชพ, เชกเซ‡เชŸเชพ เชซเซ€เชกเซเชธเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€.

เชšเชพเชฒเซ‹ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌเชฐ เช•เซ‹เชก เชœเซ‹เชˆเช:

init(_Args) ->
  %% ะฟะพะดะฟะธัั‹ะฒะฐะตะผัั ะฝะฐ ะพะฑะผะตะฝะฝะธะบ, ะบะปัŽั‡ = key
  messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
  {ok, #{}}.

handle_info(#exchange_die{exchange = ?SUBSCRIPTION}, State) ->
  %% ะตัะปะธ ั‚ะพั‡ะบะฐ ะพะฑะผะตะฝะฐ ะฝะตะดะพัั‚ัƒะฟะฝะฐ, ั‚ะพ ะฟั‹ั‚ะฐะตะผัั ะฟะตั€ะตะฟะพะดะบะปัŽั‡ะธั‚ัŒัั
  messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
  {noreply, State};

%% ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐะตะผ ะฟั€ะธัˆะตะดัˆะธะต ัะพะพะฑั‰ะตะฝะธั
handle_info(#'$msg'{exchange = ?SUBSCRIPTION, message = Msg}, State) ->
  ?debugVal(Msg),
  {noreply, State};

%% ะฟั€ะธ ะพัั‚ะฐะฝะพะฒะบะต ะฟะพั‚ั€ะตะฑะธั‚ะตะปั - ะพั‚ะบะปัŽั‡ะฐะตะผัั ะพั‚ ั‚ะพั‡ะบะธ ะพะฑะผะตะฝะฐ
terminate(_Reason, _State) ->
  messaging:unsubscribe(?SUBSCRIPTION, key, tag, self()),
  ok.

เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชˆเชชเชฃ เช…เชจเซเช•เซ‚เชณ เชœเช—เซเชฏเชพเช เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡:

messaging:publish_message(Exchange, Key, Message).

เชเช•เซเชธเชšเซ‡เชจเซเชœ - เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเช‚เชฆเซเชจเซเช‚ เชจเชพเชฎ,
เช•เซ€ - เชฐเซ‚เชŸเซ€เช‚เช— เช•เซ€
เชธเช‚เชฆเซ‡เชถ - เชชเซ‡เชฒเซ‹เชก

เชŠเช‚เชงเซเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค-เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

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

เช•เชพเชฐเซเชฏ เชตเชฟเชคเชฐเชฃ เชชเซ‡เชŸเชฐเซเชจ

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

เชšเชพเชฒเซ‹ 3 เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŠเชญเซ€ เชฅเชคเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ เชœเซ‹เชˆเช. เช•เชพเชฐเซเชฏ เชตเชฟเชคเชฐเชฃเชจเชพ เชคเชฌเช•เซเช•เซ‡ เชชเชฃ, เชตเชฟเชคเชฐเชฃเชจเซ€ เชตเชพเชœเชฌเซ€เชคเชพ เช…เชจเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเชพ เช“เชตเชฐเชซเซเชฒเซ‹เชจเซ‹ เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชพเชฏ เช›เซ‡. เชฐเชพเช‰เชจเซเชก-เชฐเซ‹เชฌเชฟเชจ เชตเชฟเชคเชฐเชฃ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชฐเชนเซ‡เชถเซ‡, เช…เชจเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเชพ เช“เชตเชฐเชซเซเชฒเซ‹เชจเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชง เชฐเชœเซ‚ เช•เชฐเซ€เชถเซเช‚ prefetch_limit. เช•เซเชทเชฃเชฟเช• เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ prefetch_limit เชเช• เชนเซ‡เชจเซเชกเชฒเชฐเชจเซ‡ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเชถเซ‡.

เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เช•เชคเชพเชฐ เช…เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซ‹ เช†เชตเชคเชพเชจเซ€ เชธเชพเชฅเซ‡ เชœ เช•เชพเชฐเซเชฏเซ‹ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. เช•เชพเชฐเซเชฏ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เช…เชฅเชตเชพ เชจเชฟเชทเซเชซเชณ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡:

  • messaging:ack(Tack) - เชœเซ‹ เชธเช‚เชฆเซ‡เชถ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‹ เชคเซ‡เชจเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
  • messaging:nack(Tack) - เชคเชฎเชพเชฎ เช•เชŸเซ‹เช•เชŸเซ€เชจเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชเช•เชตเชพเชฐ เช•เชพเชฐเซเชฏ เชชเชพเช›เซเช‚ เช†เชตเซ‡ เชคเซ‡ เชชเช›เซ€, เชฎเซ‡เชธเซ‡เชœเชฟเช‚เช— เชคเซ‡เชจเซ‡ เชฌเซ€เชœเชพ เชนเซ‡เชจเซเชกเชฒเชฐเชจเซ‡ เชฎเซ‹เช•เชฒเชถเซ‡.

เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธ. เชชเซเชฐเชฅเชฎ เช…เชญเชฟเช—เชฎ

เชงเชพเชฐเซ‹ เช•เซ‡ เชคเซเชฐเชฃ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชเช• เชœเชŸเชฟเชฒ เชจเชฟเชทเซเชซเชณเชคเชพ เช†เชตเซ€: เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ 1, เช•เชพเชฐเซเชฏ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸเชจเซ‡ เช•เช‚เชˆเชชเชฃ เชœเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เชตเชฟเชจเชพ เช•เซเชฐเซ‡เชถ เชฅเชˆ เช—เชฏเซเช‚. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชเช•เซเชธเชšเซ‡เชจเซเชœ เชชเซ‹เชˆเชจเซเชŸ เชเช• เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค เชฅเชฏเชพ เชชเช›เซ€ เช•เชพเชฐเซเชฏเชจเซ‡ เชฌเซ€เชœเชพ เชนเซ‡เชจเซเชกเชฒเชฐเชจเซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชถเซ‡. เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ, เชนเซ‡เชจเซเชกเชฒเชฐ 3 เช เช•เชพเชฐเซเชฏ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซเช‚ เช…เชจเซ‡ เชจเซ‡เช• เชฎเซ‹เช•เชฒเซเชฏเซเช‚; เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช•เชพเชฐเซเชฏ เช…เชจเซเชฏ เชนเซ‡เชจเซเชกเชฒเชฐเชจเซ‡ เชชเชฃ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชœเซ‡เชฃเซ‡ เชคเซ‡เชจเซ‡ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเซเช‚.

เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชธเชพเชฐเชพเช‚เชถ

เช…เชฎเซ‡ เชตเชฟเชคเชฐเชฟเชค เชชเซเชฐเชฃเชพเชฒเซ€เช“เชจเชพ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ€เชงเชพ เช›เซ‡ เช…เชจเซ‡ Erlang/Elixir เชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเชฎเชœ เชฎเซ‡เชณเชตเซ€ เช›เซ‡.

เชฎเซ‚เชณเชญเซ‚เชค เชฆเชพเช–เชฒเชพเช“เชจเซ‡ เชธเช‚เชฏเซ‹เชœเชฟเชค เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เช‰เชญเชฐเชคเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชœเชŸเชฟเชฒ เชฆเชพเช–เชฒเชพเช“ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชถเซเชฐเซ‡เชฃเซ€เชจเชพ เช…เช‚เชคเชฟเชฎ เชญเชพเช—เชฎเชพเช‚, เช…เชฎเซ‡ เชธเซ‡เชตเชพเช“เชจเชพ เช†เชฏเซ‹เชœเชจ, เชฐเซ‚เชŸเซ€เช‚เช— เช…เชจเซ‡ เชธเช‚เชคเซเชฒเชจเชจเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฎเซเชฆเซเชฆเชพเช“ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถเซเช‚, เช…เชจเซ‡ เชฎเชพเชชเชจเซ€เชฏเชคเชพ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช–เชพเชฎเซ€ เชธเชนเชฟเชทเซเชฃเซเชคเชพเชจเซ€ เชตเซเชฏเชตเชนเชพเชฐเซ เชฌเชพเชœเซ เชตเชฟเชถเซ‡ เชชเชฃ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เชฌเซ€เชœเชพ เชญเชพเช—เชจเซ‹ เช…เช‚เชค.

เชซเซ‹เชŸเซ‹ เชฎเชพเชฐเชฟเชฏเชธ เช•เซเชฐเชฟเชธเซเชŸเซ‡เชจเชธเชจ
websequencediagrams.com เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‡เชฒ เชšเชฟเชคเซเชฐเซ‹

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

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