āĻļā§āĻˇā§
- āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
- āĻ āĻ¨ā§āĻ°ā§āĻ§-āĻāĻŖā§āĻĄāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
- āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
- āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻžāĻāĻŦ āĻĒā§āĻ°āĻāĻžāĻļ
- āĻāĻ˛ā§āĻā§ āĻĒāĻžāĻŦāĻ˛āĻŋāĻļ āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻžāĻāĻŦ āĻāĻ°ā§āĻ¨
- āĻāĻžāĻ¸ā§āĻ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨
SOA, MSA āĻāĻŦāĻ āĻŽā§āĻ¸ā§āĻāĻŋāĻ
SOA, MSA āĻšāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ¯āĻž āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§, āĻ¯āĻāĻ¨ āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻāĻŋāĻŽ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻŋ āĻāĻ āĻŦāĻž āĻ¸ā§āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻĒā§āĻ°āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¨āĻžāĨ¤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻŦāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻ āĻŦā§āĻā§ āĻ¨āĻŋāĻ āĻ¨āĻž āĻā§āĻ¨, āĻāĻāĻ¨āĻŋāĻā§āĻ¸-āĻāĻ¯āĻŧā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻāĻ° āĻ°ā§āĻā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻŦā§āĻ˛āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻžāĻ˛: āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻš āĻāĻĒāĻžāĻĻāĻžāĻ¨, āĻĒā§āĻĨāĻ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§āĨ¤ āĻāĻĒāĻŋāĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĨ¤
āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻĒā§āĻ°ā§āĻ°āĻŖ - āĻ¨āĻžāĻŽ āĻĨā§āĻā§ āĻŦā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧ - āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻāĻžāĻ˛āĻžāĻ˛āĨ¤ āĻāĻ° āĻŽā§āĻ˛ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻā§āĻ°āĻšāĻŖ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻžāĨ¤ āĻāĻāĻŋ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻāĻ āĻ¨, āĻ°āĻžāĻāĻāĻŋāĻ āĻāĻŦāĻ āĻāĻžāĻ°āĻ¸āĻžāĻŽā§āĻ¯, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸ā§āĻ¤āĻ°ā§ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§āĨ¤
āĻāĻ¨ā§āĻ¨āĻ¤ āĻŽā§āĻ¸ā§āĻāĻŋāĻ rabbitmq-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦāĻŋāĻ¤āĻž āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯:
- āĻŦāĻŋāĻ¤āĻ°āĻŖāĨ¤
āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¤āĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻā§āĻĄā§āĻ° āĻāĻžāĻāĻžāĻāĻžāĻāĻŋāĨ¤ - āĻ¸āĻ°āĻ˛āĻ¤āĻžāĨ¤
āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§āĻ āĻā§āĻĄ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻāĻ°āĻžāĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻšāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ - āĻāĻ°āĻ āĻāĻžāĻ˛ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸āĨ¤
āĻāĻŽāĻ°āĻž rabbitmq-āĻāĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ āĻ¨āĻž, āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨ āĻ¸ā§āĻ¤āĻ°āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻŋ, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¸āĻšāĻāĻāĻžāĻŦā§ OTP-āĻ¤ā§ āĻĢāĻŋāĻ āĻāĻ°āĻŋ, āĻāĻ°āĻ āĻāĻŽāĻŋāĻ¯āĻŧā§āĨ¤ - āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž.
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ āĻ¨ā§āĻ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ - āĻ¨āĻāĻļāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻāĻ¤āĻž.
- āĻŽāĻžāĻĒāĻ¯ā§āĻā§āĻ¯āĻ¤āĻžāĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ˛ā§āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻŋ āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¸āĻ°āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ˛āĻā§āĻˇ āĻāĻ°ā§āĻ¨āĨ¤ āĻā§āĻĄ āĻ¸āĻāĻāĻ āĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻŽā§āĻāĻž-āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻāĻāĻŋāĻ˛ Erlang/Elixir āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻā§āĻĄ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ - āĻāĻāĻāĻŋ āĻāĻžāĻ¤āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ. āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸āĻā§āĻ˛āĻŋāĻā§ āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻĒā§āĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° API āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻž āĻ¸āĻšāĻ, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻ, āĻāĻāĻ¨āĻŋāĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻž āĻāĻāĻāĻŋ āĻŦā§āĻ°ā§āĻāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ. āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§āĻā§, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻŦāĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻļā§āĻ°ā§
āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧāĨ¤ - āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨āĨ¤
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻšā§āĻ¸ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻŦāĻž āĻāĻ¤āĻŋāĻļā§āĻ˛āĻāĻžāĻŦā§ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ - āĻ¸ā§āĻŦāĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨.
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻšāĻ¤ā§ āĻšāĻŦā§āĨ¤ - āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨.
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ - āĻāĻžāĻ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋ.
2 āĻ§āĻ°āĻ¨ā§āĻ° āĻļāĻžāĻāĻĄāĻžāĻāĻ¨ āĻāĻā§: āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻŦāĻ āĻāĻ°ā§āĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻžāĻĨā§, āĻāĻāĻŋ āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĨā§āĻā§ āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻ°ā§āĻ°ā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻāĻž āĻŦā§āĻļ āĻāĻāĻŋāĻ˛ āĻĻā§āĻāĻžāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻĄ āĻāĻ¤ āĻā§āĻ¤āĻŋāĻāĻ° āĻ¨āĻ¯āĻŧāĨ¤ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¸āĻš āĻā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻāĻā§ āĻĒāĻ°ā§ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻŦā§.
āĻāĻā§āĻ¸āĻā§āĻā§āĻ
āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻĒā§āĻ°ā§āĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯āĻž āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĨ¤ āĻ¨ā§āĻā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻā§āĻ¸āĻā§āĻā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖāĻāĻŋ āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻāĻ āĻ¨ āĻāĻ°ā§āĨ¤
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻĻāĻ°ā§āĻļāĻ¨ (MEPs)
āĻŦāĻŋāĻļā§āĻŦāĻŦā§āĻ¯āĻžāĻĒā§, āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻĻāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻĻā§āĻŦāĻŋ-āĻ¤āĻ°āĻĢāĻž āĻāĻŦāĻ āĻāĻāĻ¤āĻ°āĻĢāĻžāĻ¤ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻā§āĻ¤āĻ¨āĻāĻŋ āĻāĻāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦā§āĻāĻžāĻ¯āĻŧ, āĻĒāĻ°ā§āĻ°āĻāĻŋ āĻ¤āĻž āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ-āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§ āĻĻā§āĻŦāĻŋ-āĻŽā§āĻā§ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§-āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨āĨ¤ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻŦāĻ āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨āĨ¤
āĻ āĻ¨ā§āĻ°ā§āĻ§-āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻž RPC
āĻāĻ°āĻĒāĻŋāĻ¸āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻāĻ āĻšā§āĻ¸ā§āĻ āĻŦāĻž āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻŽāĻšāĻžāĻĻā§āĻļā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¨ā§āĻā§ āĻŽā§āĻ¸ā§āĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ° āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻ¯ā§āĻšā§āĻ¤ā§ āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸, āĻ¤āĻžāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ 2āĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻŦāĻŋāĻāĻā§āĻ¤:
-
āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŽāĻž āĻĻāĻŋāĻ¨
messaging:request(Exchange, ResponseMatchingTag, RequestDefinition, HandlerProcess).
āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ - āĻ āĻ¨āĻ¨ā§āĻ¯ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¨āĻžāĻŽ
ResponseMatchingTag - āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ˛ā§āĻŦā§āĻ˛āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻāĻ¤ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĨ¤
āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻ¸āĻāĻā§āĻāĻž - āĻļāĻ°ā§āĻ°ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§
āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¸ - āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻĒāĻŋāĻāĻāĻĄāĻŋāĨ¤ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻŦā§āĻ¨. -
āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ
handle_info(#'$msg'{exchange = EXCHANGE, tag = ResponseMatchingTag,message = ResponsePayload}, State)
āĻ°ā§āĻ¸āĻĒāĻ¨ā§āĻ¸āĻĒā§āĻ˛ā§āĻĄ - āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ 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 āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻžāĻ˛ā§ˇ
Erlang āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĒāĻžāĻ - āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻ˛ā§āĻĄ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ¤ā§āĻ¤āĻ°āĻā§āĻ˛āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻĒā§āĻ°āĻžāĻĒāĻā§āĻ° āĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ, āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻŦāĻžāĻāĻĒāĻžāĻ¸ āĻāĻ°ā§āĨ¤
āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
āĻāĻĨā§āĻĒāĻāĻĨāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ 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