Π£ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈΡ
- ΠΠ°Ρ ΡΠ΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ
- Π Π΅ΠΊΡΠ΅ΡΡ-Π¦ΡΠ½ΠΊΠ΅Π΄ Π Π΅ΡΠΏΠΎΠ½ΡΠ΅
- ΠΠ΄Π³ΠΎΠ²ΠΎΡ ΡΠ° Π·Π°Ρ ΡΠ΅Π²ΠΎΠΌ
- ΠΎΠ±ΡΠ°Π²ΠΈ-ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ ΡΠ΅
- ΠΠ½Π²Π΅ΡΡΠ΅Π΄ ΠΡΠ±Π»ΠΈΡΡ Π‘ΡΠ±ΡΡΡΠΈΠ±Π΅
- ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π·Π°Π΄Π°ΡΠ°ΠΊΠ°
Π‘ΠΠ, ΠΠ‘Π ΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ°
Π‘ΠΠ, ΠΠ‘Π ΡΡ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΊΠΎΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄ΠΎΠΊ ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅ Π·Π° ΡΠΈΡ ΠΎΠ²Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ.
ΠΠ΅ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΠΏΡΠΎΠΏΠ°Π³ΠΈΡΠ°ΠΌ ΠΎΠ²Ρ ΠΈΠ»ΠΈ ΠΎΠ½Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° ΡΠ°ΠΌ Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ Π½Π°ΡΠ΅ΡΠΈΠΊΠ°ΡΠ½ΠΈΡΠΈΡ ΠΈ Π½Π°ΡΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈ Π·Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΠΈ ΠΏΠΎΡΠ°ΠΎ. ΠΠΎΡΡ Π³ΠΎΠ΄ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ Π΄Π° ΠΈΠ·Π°Π±Π΅ΡΠ΅ΠΌΠΎ, Π±ΠΎΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΠ° ΠΎΠΊΠΎΠΌ Π½Π° Π£Π½ΠΈΠΊ-ΠΏΡΡ: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΠΌ ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π΅ Π·Π° ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½Π΅ Π΅Π½ΡΠΈΡΠ΅ΡΠ΅. ΠΠΠ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΎΠ±Π°Π²ΡΠ°ΡΡ Π½Π°ΡΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ°Π΄ΡΠ΅ ΡΠ° Π΅Π½ΡΠΈΡΠ΅ΡΠΈΠΌΠ°.
Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° - ΠΊΠ°ΠΎ ΡΡΠΎ ΠΈΠΌΠ΅ Π³ΠΎΠ²ΠΎΡΠΈ - ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΠΏΠΎΡΡΠΊΠ°. ΠΠ΅Π³ΠΎΠ²Π° Π³Π»Π°Π²Π½Π° ΡΠ²ΡΡ
Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΈ ΡΠ»Π°ΡΠ΅ ΠΏΠΎΡΡΠΊΠ°. ΠΠ΄Π³ΠΎΠ²ΠΎΡΠ°Π½ ΡΠ΅ Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠ΅ Π·Π° ΡΠ»Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°, ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠΊΠΈΡ
ΠΊΠ°Π½Π°Π»Π° Π·Π° ΠΏΡΠ΅Π½ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΡΠ½ΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅, ΠΊΠ°ΠΎ ΠΈ ΡΡΠΊΠΎΠ²Π°ΡΠ΅ ΠΊΠ²Π°ΡΠΎΠ²ΠΈΠΌΠ° Π½Π° Π½ΠΈΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°.
Π Π°Π·Π²ΠΈΡΠ΅Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ Π½Π΅ ΠΏΠΎΠΊΡΡΠ°Π²Π°ΡΡ Π΄Π° ΡΠ΅ ΡΠ°ΠΊΠΌΠΈΡΠ΅ ΡΠ° ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ ΡΠ°Π±Π±ΠΈΡΠΌΠΊ. ΠΠ΅Π³ΠΎΠ²Π΅ Π³Π»Π°Π²Π½Π΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅:
- ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°.
Π’Π°ΡΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π½Π° ΡΠ²ΠΈΠΌ ΡΠ²ΠΎΡΠΎΠ²ΠΈΠΌΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΡΡΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Ρ ΠΊΠΎΡΠΈ ΠΈΡ ΠΊΠΎΡΠΈΡΡΠΈ. - ΠΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡ.
Π€ΠΎΠΊΡΡΠΈΡΠ°ΡΡΠ΅ ΡΠ΅ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ°. - ΠΠΎΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅.
ΠΠ΅ ΠΏΠΎΠΊΡΡΠ°Π²Π°ΠΌΠΎ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΈΠΌΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ°Π±Π±ΠΈΡΠΌΠΊ-Π°, Π²Π΅Ρ Π±ΠΈΡΠ°ΠΌΠΎ ΡΠ°ΠΌΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΠ½ΡΠΊΠΈ ΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΡΠ»ΠΎΡ, ΠΊΠΎΡΠΈ ΡΡΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠΊΠ»Π°ΠΏΠ°ΠΌΠΎ Ρ ΠΠ’Π, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΡΡΠΈ ΡΡΠΎΡΠΊΠΎΠ²Π΅. - Π€Π»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ.
Π‘Π²Π°ΠΊΠ° ΡΡΠ»ΡΠ³Π° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Ρ. - ΠΡΠΏΠΎΡΠ½ΠΎΡΡ ΠΏΠΎ Π΄ΠΈΠ·Π°ΡΠ½Ρ.
- ΠΡΠΈΠ»Π°Π³ΠΎΠ΄ΡΠΈΠ²ΠΎΡΡ.
Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° ΡΠ°ΡΡΠ΅ ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ. ΠΠ°ΠΊΠΎ ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ°Π²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ°ΡΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π΅ Π½Π° ΠΎΠ΄Π²ΠΎΡΠ΅Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠ°ΠΏΠΎΠΌΠ΅Π½Π°. Π£ ΡΠΌΠΈΡΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΌΠ΅ΡΠ°-ΠΏΡΠΎΡΠ΅ΠΊΡΠΈ ΡΡ Π²Π΅ΠΎΠΌΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΡΠ»ΠΎΠΆΠ΅Π½Π΅ ΠΡΠ»Π°Π½Π³/ΠΠ»ΠΈΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π‘Π°Π² ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΡΠ΅ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΡΠΏΡΠ΅ΠΌΠΈΡΡΡ - ΠΊΡΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΡ. ΠΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΡ ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°Π½Π΅ ΡΡΠΎ ΡΠ΅ Π²ΠΈΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΈ ΠΎΠ±Π°Π²ΡΠ°ΡΡ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΡ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π΅ Π·Π° ΠΏΠΎΡΠ΅Π±Π°Π½ Π΅Π½ΡΠΈΡΠ΅Ρ. Π‘Π° ΠΎΠ²ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ, Π»Π°ΠΊΠΎ ΡΠ΅ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΠΈ ΠΠΠ ΡΠ΅Π»ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ°, Π»Π°ΠΊΠΎ ΡΠ΅ ΡΠ½ΠΎΡΠΈΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅, Π·Π³ΠΎΠ΄Π½ΠΎ ΡΠ΅ ΠΏΠΈΡΠ°ΡΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΠΎ Π±ΡΠΎΠΊΠ΅ΡΠ°. Π‘Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΡΠ΅Π½Π΅ ΠΏΠΎΡΡΠΊΠ°, ΡΠ²Π°ΠΊΠ° ΡΡΠ»ΡΠ³Π° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΆΠΈΠ²ΠΎΡΠ½ΠΈΡ ΡΠ°Π·Π°:
- ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΡΡΠ»ΡΠ³Π΅.
Π£ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΠΈΠ·Π²ΡΡΠ°Π²Π° ΡΡΠ»ΡΠ³Ρ ΠΈ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. - ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΡΠΊΡ ΡΠ°Π·ΠΌΠ΅Π½Π΅.
Π£ΡΠ»ΡΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°ΡΠΈΡΠΊΡ ΡΠ°ΡΠΊΡ ΡΠ°Π·ΠΌΠ΅Π½Π΅ Π½Π°Π²Π΅Π΄Π΅Π½Ρ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ Ρ ΠΎΡΡΠ° ΠΈΠ»ΠΈ Π΄Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΠΊΡΠ΅ΠΈΡΠ° ΡΠ°ΡΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π΅. - Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° ΡΡΠ»ΡΠ³Π΅.
ΠΠ° Π±ΠΈ ΡΡΠ»ΡΠ³Π° ΡΠ»ΡΠΆΠΈΠ»Π° Π·Π°Ρ ΡΠ΅Π²Π΅, ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°Π½Π° Π½Π° ΠΌΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Π½Π΅. - ΠΠΎΡΠΌΠ°Π»Π°Π½ ΡΠ°Π΄.
Π£ΡΠ»ΡΠ³Π° ΡΠ°Π΄ΠΈ ΠΊΠΎΡΠΈΡΡΠ°Π½ ΠΏΠΎΡΠ°ΠΎ. - ΠΠ°Π²ΡΡΠ΅ΡΠ°ΠΊ ΡΠ°Π΄ΠΎΠ²Π°.
ΠΠΎΡΡΠΎΡΠ΅ 2 Π²ΡΡΡΠ΅ ΠΈΡΠΊΡΡΡΠ΅ΡΠ°: ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ ΠΈ Ρ ΠΈΡΠ½ΠΎ. Π‘Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, ΠΈΡΠΊΡΡΡΡΡΠ΅ ΡΠ΅ ΡΠ° ΠΌΠ΅ΡΡΠ° ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΠΈ Π·Π°ΡΡΡΠ°Π²ΡΠ°. Π£ Ρ ΠΈΡΠ½ΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°, ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° ΠΈΠ·Π²ΡΡΠ°Π²Π° ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ ΡΡΠ΅Π½Π°ΡΠΈΡΠ° ΠΏΡΠ΅Π»Π°ΡΠΊΠ° Π½Π° Π³ΡΠ΅ΡΠΊΡ.
ΠΠ·Π³Π»Π΅Π΄Π° ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ, Π°Π»ΠΈ ΠΊΠΎΠ΄ Π½ΠΈΡΠ΅ ΡΠΎΠ»ΠΈΠΊΠΎ ΡΡΡΠ°ΡΠ½ΠΎ. ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π° ΡΠ° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΠΌΠ° Π±ΠΈΡΠ΅ Π΄Π°ΡΠΈ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π΅ΡΡΠΎ ΠΊΠ°ΡΠ½ΠΈΡΠ΅.
Π Π°Π·ΠΌΠ΅Π½Π΅
Π’Π°ΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΠΏΠΎΡΡΠΊΠ° ΠΊΠΎΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π»ΠΎΠ³ΠΈΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ΅ ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠ° ΡΠ½ΡΡΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΊΠ°. Π£ ΡΠ²ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΈΠΌΠ° Ρ Π½Π°ΡΡΠ°Π²ΠΊΡ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ ΠΏΡΠ΅ΠΊΠΎ ΡΠ°ΡΠ°ΠΊΠ° ΡΠ°Π·ΠΌΠ΅Π½Π΅, ΡΠΈΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° ΡΠΎΡΠΌΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΊΠ°.
ΠΠ±ΡΠ°ΡΡΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΠΏΠΎΡΡΠΊΠ° (ΠΠΠ)
Π£ Π³Π»ΠΎΠ±Π°Π»Ρ, ΠΎΠ±ΡΠ°ΡΡΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠΈ Π½Π° Π΄Π²ΠΎΡΡΡΠ°Π½Π΅ ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΡΠ°Π½Π΅. ΠΡΠ²ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π΄ΠΎΠ»Π°Π·Π½Ρ ΠΏΠΎΡΡΠΊΡ, Π΄ΡΡΠ³ΠΈ Π½Π΅. ΠΠ»Π°ΡΠΈΡΠ°Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π²ΠΎΡΠΌΠ΅ΡΠ½ΠΎΠ³ ΠΎΠ±ΡΠ°ΡΡΠ° Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ ΠΊΠ»ΠΈΡΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ ΠΎΠ±ΡΠ°Π·Π°Ρ ΠΠ°Ρ ΡΠ΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ. Π Π°Π·ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ ΠΈ ΡΠ΅Π³ΠΎΠ²Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠ°Ρ ΡΠ΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΈΠ»ΠΈ Π ΠΠ¦
Π ΠΠ¦ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΠΌΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΎΠ΄ Π΄ΡΡΠ³ΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΠ°. ΠΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½Π° ΠΈΡΡΠΎΠΌ Ρ ΠΎΡΡΡ ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ½Π΅Π½ΡΡ. ΠΡΠΏΠΎΠ΄ ΡΠ΅ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊΡΠΎΠ· ΡΠ°Π·ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΊΠ°.
ΠΠΎΡΡΠΎ ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° ΠΏΠΎΡΠΏΡΠ½ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π°, ΡΠ°Π·ΠΌΠ΅Π½Π° Π·Π° ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½Π° Ρ 2 ΡΠ°Π·Π΅:
-
ΡΠ°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²
messaging:request(Exchange, ResponseMatchingTag, RequestDefinition, HandlerProcess).
ΡΠ°Π·ΠΌΠ΅Π½Π° β ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈ Π½Π°Π·ΠΈΠ² ΡΠ°ΡΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π΅
Π Π΅ΡΠΏΠΎΠ½ΡΠ΅ΠΠ°ΡΡΡ ΠΈΠ½Π³Π’Π°Π³ β Π»ΠΎΠΊΠ°Π»Π½Π° ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π΄Ρ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ»ΡΡΠ°ΡΡ ΡΠ»Π°ΡΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΡ Π·Π°Ρ ΡΠ΅Π²Π° ΠΊΠΎΡΠΈ ΠΏΡΠΈΠΏΠ°Π΄Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌΠ°.
ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° Π·Π°Ρ ΡΠ΅Π²Π° β ΡΠ΅Π»ΠΎ Π·Π°Ρ ΡΠ΅Π²Π°
Π₯Π°Π½Π΄Π»Π΅ΡΠΡΠΎΡΠ΅ΡΡ β ΠΠΠ ΡΡΠΊΠΎΠ²Π°ΠΎΡΠ°. ΠΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°. -
ΠΠ±ΡΠ°Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°
handle_info(#'$msg'{exchange = EXCHANGE, tag = ResponseMatchingTag,message = ResponsePayload}, State)
Π Π΅ΡΠΏΠΎΠ½ΡΠ΅ΠΠ°ΠΈΠ»ΠΎΠ°Π΄ - ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ° ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ 2 ΡΠ°Π·Π΅:
- ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΡΠ°ΡΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅Π½Π΅
- ΠΠ±ΡΠ°Π΄Π° Π΄ΠΎΠ»Π°Π·Π½ΠΈΡ Π·Π°Ρ ΡΠ΅Π²Π°
ΠΠ»ΡΡΡΡΡΡΠΌΠΎ ΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠΎΠ΄ΠΎΠΌ. Π Π΅ΡΠΈΠΌΠΎ Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Ρ ΡΡΠ»ΡΠ³Ρ ΠΊΠΎΡΠ° ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ ΡΠ΅Π΄Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΡΠ½ΠΎΠ³ Π²ΡΠ΅ΠΌΠ΅Π½Π°.
Π‘Π΅ΡΠ²Π΅ΡΡΠΊΠΈ ΠΊΠΎΠ΄
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡ ΠΠΠ-ΡΠ° ΡΡΠ»ΡΠ³Π΅ Π½Π° Π°ΠΏΠΈ.Ρ ΡΠ»:
%% =====================================================
%% 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{}
}).
ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΡΡΠ»ΡΠ³Π΅ Ρ ΡΠΈΠΌΠ΅_ΡΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ.Π΅ΡΠ»
%% Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠΈΠΌΡΠΉ ΠΊΠΎΠ΄. ΠΡΡΠ°Π²ΠΈΠ² Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΎΠ½ 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.
Π¨ΠΈΡΡΠ° ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ°
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΡΠ»Π°Π»ΠΈ Π·Π°Ρ ΡΠ΅Π² ΡΡΠ»ΡΠ·ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ·ΠΎΠ²Π΅ΡΠ΅ ΠΠΠ Π·Π°Ρ ΡΠ΅Π²Π° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΊΠ° Π±ΠΈΠ»ΠΎ Π³Π΄Π΅ Π½Π° ΠΊΠ»ΠΈΡΠ΅Π½ΡΡ:
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 ΠΏΠΎΡΡΠΊΠ΅ ΠΎΠ΄ 1 ΠΠ ΡΡ Π±ΠΎΡΠ΅ ΠΎΠ΄ ΡΠ΅Π΄Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΎΠ΄ 1 ΠΠ.
Π£ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΡΠ»Π°Π½Π³ Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ Π΄ΠΎΠ΄Π°ΡΠ½Ρ ΠΊΠΎΡΠΈΡΡ - ΡΠΌΠ°ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ° Π½Π° ΡΠ°ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ ΠΎΠ΄ΠΌΠ°Ρ ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ°ΠΎΡΡ, Π·Π°ΠΎΠ±ΠΈΠ»Π°Π·Π΅ΡΠΈ ΡΠ°ΡΠΊΡ ΡΠ°Π·ΠΌΠ΅Π½Π΅.
ΠΠ΄Π³ΠΎΠ²ΠΎΡ ΡΠ° Π·Π°Ρ ΡΠ΅Π²ΠΎΠΌ
ΠΠ²ΠΎ ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° Π ΠΠ¦ ΠΎΠ±ΡΠ°ΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΠ·Π°ΡΠΈΡΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΠ±ΡΠ°Π²ΠΈ-ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈ ΡΠ΅ (ΡΡΠ°Π±Π»ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°)
Π‘ΠΈΡΡΠ΅ΠΌΠΈ Π²ΠΎΡΠ΅Π½ΠΈ Π΄ΠΎΠ³Π°ΡΠ°ΡΠΈΠΌΠ° ΠΈΡΠΏΠΎΡΡΡΡΡΡ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈΠΌΠ° ΡΠΈΠΌ Π±ΡΠ΄Ρ ΡΠΏΡΠ΅ΠΌΠ½ΠΈ. ΠΡΠ΅ΠΌΠ° ΡΠΎΠΌΠ΅, ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΡ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ ΠΏΡΡΡ
ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ° ΠΈΠ»ΠΈ Π°Π½ΠΊΠ΅ΡΠΈΡΠ°ΡΠ°. ΠΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π½Π΅ ΡΡΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠ΅ ΡΡΠ°Π»Π½ΠΈΠΌ ΡΡΠ°ΠΆΠ΅ΡΠ΅ΠΌ ΠΈ ΡΠ΅ΠΊΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
Π‘Π»ΠΈΠΊΠ° ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅Π½ΠΈ Π½Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Ρ ΡΠ΅ΠΌΡ.
ΠΠ»Π°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΠΎΠ²ΠΎΠ³ ΠΎΠ±ΡΠ°ΡΡΠ° ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΡΡΠ°ΡΠ°: ΡΠ²Π΅Ρ ΠΈΠ³ΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈΠΌ ΠΈΠ³ΡΠ°ΠΌΠ°, ΡΡΠΆΠΈΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ Π½Π° Π±Π΅ΡΠ·Π°ΠΌΠ°, ΠΊΠΎΡΠΈΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Ρ ΡΠΈΠ΄ΠΎΠ²ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.
Π£Π·ΠΌΠΈΡΠ΅ Ρ ΠΎΠ±Π·ΠΈΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΊΠΈ ΠΊΠΎΠ΄:
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 ΡΡΠΊΠΎΠ²Π°ΠΎΡΠ°. Π§Π°ΠΊ ΠΈΡ ΡΠ°Π·ΠΈ ΡΠ°ΡΠΏΠΎΠ΄Π΅Π»Π΅ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΏΠΎΡΡΠ°Π²ΡΠ° ΡΠ΅ ΠΏΠΈΡΠ°ΡΠ΅ ΠΏΡΠ°Π²Π΅Π΄Π½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠΎΠ΄Π΅Π»Π΅ ΠΈ ΠΏΡΠ΅Π»ΠΈΠ²Π°ΡΠ° ΡΡΠΊΠΎΠ²Π°Π»Π°ΡΠ°. ΠΡΡΠΆΠ½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π° Π·Π° ΠΏΡΠ°Π²ΠΈΡΠ½ΠΎΡΡ, Π° ΠΊΠ°ΠΊΠΎ Π±ΠΈΡΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π»ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΏΡΠ΅Π»ΠΈΠ²Π°ΡΠ° ΡΡΠΊΠΎΠ²Π°Π»Π°ΡΠ°, ΡΠ²Π΅ΡΡΠ΅ΠΌΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠ΅ΡΡΡ _Π»ΠΈΠΌΠΈΡ. Π£ ΠΏΡΠ΅Π»Π°Π·Π½ΠΈΠΌ ΡΠ΅ΠΆΠΈΠΌΠΈΠΌΠ° ΠΏΡΠ΅ΡΠ΅ΡΡΡ _Π»ΠΈΠΌΠΈΡ Π½Π΅ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ Π΄Π° ΡΠ΅Π΄Π°Π½ ΡΡΠΊΠΎΠ²Π°Π»Π°Ρ ΠΏΡΠΈΠΌΠΈ ΡΠ²Π΅ Π·Π°Π΄Π°ΡΠΊΠ΅.
Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡΡΠΊΠ° ΡΠΏΡΠ°Π²ΡΠ° ΡΠ΅Π΄ΠΎΠ²ΠΈΠΌΠ° ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΎΠ±ΡΠ°Π΄Π΅. ΠΡΠΎΡΠ΅ΡΠΎΡΠΈ Π΄ΠΎΠ±ΠΈΡΠ°ΡΡ Π·Π°Π΄Π°ΡΠΊΠ΅ ΡΠΈΠΌ ΡΡΠΈΠ³Π½Ρ. ΠΠ°Π΄Π°ΡΠ°ΠΊ ΠΌΠΎΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π²ΡΡΠΈ ΠΈΠ»ΠΈ Π½Π΅ ΡΡΠΏΠ΅:
messaging:ack(Tack)
β ΠΏΠΎΠ·ΠΈΠ²Π° ΡΠ΅ Ρ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΏΠ΅ΡΠ½Π΅ ΠΎΠ±ΡΠ°Π΄Π΅ ΠΏΠΎΡΡΠΊΠ΅messaging:nack(Tack)
β ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠΈ Ρ ΡΠ²ΠΈΠΌ Π²Π°Π½ΡΠ΅Π΄Π½ΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΠΌΠ°. ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ Π²ΡΠ°ΡΠΈ, ΠΏΠΎΡΡΠΊΠ° ΡΠ΅ Π³Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠΊΠΎΠ²Π°ΠΎΡΡ.
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠΊΠΎΠΌ ΠΎΠ±ΡΠ°Π΄Π΅ ΡΡΠΈ Π·Π°Π΄Π°ΡΠΊΠ° Π΄ΠΎΡΠ»ΠΎ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΎΠ³ ΠΊΠ²Π°ΡΠ°: ΡΡΠΊΠΎΠ²Π°Π»Π°Ρ 1 ΡΠ΅, Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΌΠΈΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ, ΠΏΠ°ΠΎ Π° Π΄Π° Π½ΠΈΡΠ΅ ΠΈΠΌΠ°ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π΄Π° Π±ΠΈΠ»ΠΎ ΡΡΠ° ΠΏΡΠΈΡΠ°Π²ΠΈ ΡΠ°ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π΅. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΡΠ°ΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅Π½Π΅ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠΈ ΠΏΠΎΡΠ°ΠΎ Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠΊΠΎΠ²Π°ΠΎΡΡ Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΠΈΡΡΠ΅ΠΊΠ½Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅. Π ΡΠΊΠΎΠ²Π°Π»Π°Ρ 3 ΡΠ΅ ΠΈΠ· Π½Π΅ΠΊΠΎΠ³ ΡΠ°Π·Π»ΠΎΠ³Π° Π½Π°ΠΏΡΡΡΠΈΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ»Π°ΠΎ Π½Π°ΡΠΊ, ΠΊΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, Π·Π°Π΄Π°ΡΠ°ΠΊ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΡΠ΅ΡΠ°ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠ³ ΡΡΠΊΠΎΠ²Π°ΠΎΡΠ° ΠΊΠΎΡΠΈ Π³Π° ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠΈΠΎ.
ΠΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ΅Π·ΠΈΠΌΠ΅
Π Π°Π·Π±ΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π³ΡΠ°ΡΠ΅Π²Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΡΠ΅ΠΊΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΠ΅ ΡΠΈΡ ΠΎΠ²Π΅ ΡΠΏΠΎΡΡΠ΅Π±Π΅ Ρ ΠΡΠ»Π°Π½Π³/ΠΠ»ΠΈΠΊΠΈΡ-Ρ.
ΠΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠΎΠ³Ρ ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠΈ ΡΠ»ΠΎΠΆΠ΅Π½Π΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π£ Π·Π°Π²ΡΡΠ½ΠΎΠΌ Π΄Π΅Π»Ρ ΡΠΈΠΊΠ»ΡΡΠ° ΡΠ°Π·ΠΌΠΎΡΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠΏΡΡΠ° ΠΏΠΈΡΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°, ΡΡΡΠΈΡΠ°ΡΠ° ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ°, Π° ΡΠ°ΠΊΠΎΡΠ΅ ΡΠ΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡ ΡΡΡΠ°Π½ΠΈ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΡΠ°Ρ Π΄ΡΡΠ³ΠΎΠ³ Π΄Π΅Π»Π°.
Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°
ΠΠ»ΡΡΡΡΠ°ΡΠΈΡΠ΅ ΡΡΠ±Π°Π·Π½ΠΎΡΡΡ Π²Π΅Π±ΡΠ΅ΠΊΡΠ΅Π½ΡΠ΅Π΄ΠΈΠ°Π³ΡΠ°ΠΌΡ.ΡΠΎΠΌ
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ