เจตเฉฐเจกเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจฌเจฟเจฒเจกเจฟเฉฐเจ— เจฌเจฒเจพเจ•เฅค เจชเจนเจฟเจฒเฉ€ เจชเจนเฉเฉฐเจš

เจตเฉฐเจกเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจฌเจฟเจฒเจกเจฟเฉฐเจ— เจฌเจฒเจพเจ•เฅค เจชเจนเจฟเจฒเฉ€ เจชเจนเฉเฉฐเจš

เจชเจฟเจ›เจฒเฉ‡ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– เจ…เจธเฉ€เจ‚ เจฐเจฟเจเจ•เจŸเจฟเจต เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€เจ†เจ‚ เจธเจฟเจงเจพเจ‚เจคเจ• เจฌเฉเจจเจฟเจ†เจฆเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ‡เจน เจกเจพเจŸเจพ เจชเฉเจฐเจตเจพเจน, เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ Erlang/Elixir เจธเจฟเจธเจŸเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ— เจชเฉˆเจŸเจฐเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ:

  • เจฌเฉ‡เจจเจคเฉ€-เจœเจตเจพเจฌ
  • เจฌเฉ‡เจจเจคเฉ€-เจšเฉฐเจ•เจก เจœเจตเจพเจฌ
  • เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจœเจตเจพเจฌ
  • เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเฉ‹-เจธเจฌเจธเจ•เฉเจฐเจพเจˆเจฌ เจ•เจฐเฉ‹
  • เจ‰เจฒเจŸเจพ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ—เจพเจนเจ• เจฌเจฃเฉ‹
  • เจ•เจพเจฐเจœ เจตเฉฐเจก

SOA, MSA เจ…เจคเฉ‡ เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ—

SOA, MSA เจธเจฟเจธเจŸเจฎ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจนเจจ เจœเฉ‹ เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ— เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจฎเฉเฉฑเจขเจฒเฉ‡ เจคเฉฑเจค เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจฎเฉˆเจ‚ เจ‡เจธ เจœเจพเจ‚ เจ‰เจธ เจธเจฟเจธเจŸเจฎ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเจพ เจชเฉเจฐเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพเฅค เจฎเฉˆเจ‚ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ•เจพเจฐเฉ‹เจฌเจพเจฐ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจ…เจญเจฟเจ†เจธเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจœเฉ‹ เจตเฉ€ เจชเฉˆเจฐเจพเจกเจพเจˆเจฎ เจšเฉเจฃเจฆเฉ‡ เจนเจพเจ‚, เจฏเฉ‚เจจเจฟเจ•เจธ-เจตเฉ‡เจ… 'เจคเฉ‡ เจจเจœเจผเจฐ เจฐเฉฑเจ– เจ•เฉ‡ เจธเจฟเจธเจŸเจฎ เจฌเจฒเจพเจ• เจฌเจฃเจพเจ‰เจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆ: เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ•เจจเฉˆเจ•เจŸเฉ€เจตเจฟเจŸเฉ€ เจตเจพเจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡, เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ‡เจ•เจพเจˆเจ†เจ‚ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฅค API เจตเจฟเจงเฉ€เจ†เจ‚ เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเจญ เจคเฉ‹เจ‚ เจธเจงเจพเจฐเจจ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ— - เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจจเจพเจฎ เจคเฉ‹เจ‚ เจญเจพเจต เจนเฉˆ - เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเจพ เจฆเจฒเจพเจฒเฅค เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจ– เจ‰เจฆเฉ‡เจธเจผ เจธเฉเจจเฉ‡เจนเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจญเฉ‡เจœเจฃเจพ เจนเฉˆเฅค เจ‡เจน เจœเจพเจฃเจ•เจพเจฐเฉ€ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธเจพเจ‚, เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจšเฉˆเจจเจฒเจพเจ‚ เจฆเฉ‡ เจ—เจ เจจ, เจฐเฉ‚เจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจธเฉฐเจคเฉเจฒเจจ เจฆเฉ‡ เจจเจพเจฒ เจจเจพเจฒ เจธเจฟเจธเจŸเจฎ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ…เจธเจซเจฒเจคเจพ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆเฅค
เจตเจฟเจ•เจธเจค เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ— rabbitmq เจจเจพเจฒ เจฎเฉเจ•เจพเจฌเจฒเจพ เจ•เจฐเจจ เจœเจพเจ‚ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚:

  • เจตเฉฐเจก.
    เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจฌเจฃเจพเจ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ•เฉ‹เจก เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจธเจพเจฆเจ—เฉ€.
    เจฌเฉ‹เจ‡เจฒเจฐเจชเจฒเฉ‡เจŸ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเฉฑเจš เจ†เจธเจพเจจเฉ€ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจ•เฉ‡เจ‚เจฆเจฐเจฟเจค เจ•เจฐเฉ‹เฅค
  • เจฌเจฟเจนเจคเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ.
    เจ…เจธเฉ€เจ‚ rabbitmq เจฆเฉ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจชเจฐ เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐเจฒ เจ…เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจธเจชเฉ‹เจฐเจŸ เจฒเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจšเฉเจฃเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ OTP เจตเจฟเฉฑเจš เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจซเจฟเฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจฒเจพเจ—เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค
  • เจฒเจšเจ•เจคเจพเฅค
    เจนเจฐเฉ‡เจ• เจธเฉ‡เจตเจพ เจ•เจˆ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค
  • เจกเจฟเจœเจผเจพเจˆเจจ เจฆเฉเจ†เจฐเจพ เจฒเจšเจ•เจคเจพ.
  • เจธเจ•เฉ‡เจฒเฉ‡เจฌเจฟเจฒเจŸเฉ€เฅค
    เจเจช เจจเจพเจฒ เจฎเฉˆเจธเฉ‡เจœเจฟเฉฐเจ— เจตเจงเจฆเฉ€ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฒเฉ‹เจก เจตเจงเจฆเจพ เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉˆ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจŸเจฟเฉฑเจชเจฃเฉ€. เจ•เฉ‹เจก เจธเฉฐเจ—เจ เจจ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจฎเฉˆเจŸเจพ-เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ Erlang/Elixir เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเจจเฅค เจธเจพเจฐเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉ‹เจก เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจนเจจ - เจ‡เฉฑเจ• เจ›เจคเจฐเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเฅค เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ…เจฒเฉฑเจ— เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจนเจธเจคเฉ€ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจชเฉ‚เจฐเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ 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 เจชเจฐเจฟเจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ api.hrl เจตเจฟเฉฑเจš เจญเฉ‡เจœเฉ€เจ:

%% =====================================================
%%  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 เจตเจฟเฉฑเจš เจฆเฉ‹เจตเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเฉ€เจ:

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 1MB เจธเฉเจจเฉ‡เจนเฉ‡ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ 1GB เจธเฉเจจเฉ‡เจนเฉ‡ เจจเจพเจฒเฉ‹เจ‚ เจฌเจฟเจนเจคเจฐ เจนเจจเฅค

เจ…เจฐเจฒเจพเจ‚เจ— เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฒเจพเจญ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ - เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจตเจพเจฌ เจคเฉเจฐเฉฐเจค เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจเฅค

เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจœเจตเจพเจฌ

เจ‡เจน เจธเฉฐเจตเจพเจฆ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ 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, เจŸเจพเจธเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจ•เฉเจ เจตเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฒเจˆ เจธเจฎเจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจ—เจฟเจ†เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจเจ•เจธเจšเฉ‡เจ‚เจœ เจชเฉเจ†เจ‡เฉฐเจŸ ack เจธเจฎเจพเจ‚ เจธเจฎเจพเจชเจค เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจจเฉŒเจ•เจฐเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจนเฉˆเจ‚เจกเจฒเจฐ เจจเฉ‚เฉฐ เจคเจฌเจฆเฉ€เจฒ เจ•เจฐ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจนเฉˆเจ‚เจกเจฒเจฐ 3 เจจเฉ‡ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเฉˆเจ• เจญเฉ‡เจœเจฟเจ†, เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เจน เจ•เฉฐเจฎ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจนเฉˆเจ‚เจกเจฒเจฐ เจจเฉ‚เฉฐ เจตเฉ€ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจœเจฟเจธเจจเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจชเฉ‚เจฐเจพ เจ•เฉ€เจคเจพเฅค

เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจพเจฐ

เจ…เจธเฉ€เจ‚ เจตเจฟเจคเจฐเจฟเจค เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจฌเจฟเจฒเจกเจฟเฉฐเจ— เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‹เฉœ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ เจ…เจคเฉ‡ Erlang/Elixir เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจฎเจ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค

เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœ เจ•เฉ‡, เจ‰เจญเจฐ เจฐเจนเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉˆเจฐเจพเจกเจพเจˆเจฎ เจฌเจฃเจพเจ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจšเฉฑเจ•เจฐ เจฆเฉ‡ เจ…เฉฐเจคเจฎ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจ†เจฏเฉ‹เจœเจจ, เจฐเฉ‚เจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจธเฉฐเจคเฉเจฒเจจ เจฆเฉ‡ เจ†เจฎ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฆเฉ€ เจฎเจพเจชเจฏเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจจเฉเจ•เจธ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ‡ เจตเจฟเจนเจพเจฐเจ• เจชเฉฑเจ– เจฌเจพเจฐเฉ‡ เจตเฉ€ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจฆเฉ‚เจœเฉ‡ เจญเจพเจ— เจฆเจพ เจ…เฉฐเจค.

เจซเฉ‹เจŸเฉ‹เจ—เฉเจฐเจพเจซเฉ€ เจฎเจพเจฐเฉ€เจ…เจธ เจ•เฉเจฐเจฟเจธเจŸเจจเจธเจจ
websequencediagrams.com เจฆเฉ‡ เจธเจผเจฟเจธเจผเจŸเจพเจšเจพเจฐ เจฆเฉ‡ เจšเจฟเฉฑเจคเจฐ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹