ΠΠΎΠ±ΡΡ Π΄Π΅Π½, Π₯Π°Π±Ρ! ΠΡΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ Ρ Π·Π½Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΡΠΏΡΡ
Π΄Π° ΡΡΠ±Π΅ΡΠ° ΠΏΠΎ RabbitMQ ΠΈ Π΄Π° Π³ΠΈ ΡΡΠΈΡΠ½Π° Π² ΠΊΡΠ°ΡΠΊΠΈ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅
- RabbitMQ. Π§Π°ΡΡΡ 1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Erlang, AMQP ΠΈ RPC
- RabbitMQ. Π§Π°ΡΡ 2. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Exchanges
- RabbitMQ. Π§Π°ΡΡΡ 3. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°ΠΌΠΈ
- RabbitMQ. Π§Π°ΡΡ 4. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΠΈ ΡΡΠ΅ΠΉΠΌΠΎΠ²Π΅ΡΠ΅.
- RabbitMQ. Π§Π°ΡΡΡ 5. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- RabbitMQ. Π§Π°ΡΡΡ 6. ΠΠ±Π·ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Federation ΠΈ Shovel
- RabbitMQ. Π§Π°ΡΡΡ 7. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ Connection ΠΈ ChanΠ΅Π»
- RabbitMQ. Π§Π°ΡΡΡ 8. RabbitMQ Π² .NET
- RabbitMQ. Π§Π°ΡΡΡ 9. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΡΠ°ΡΠΊΠΎ Π·Π° AMQP
AMQP (Advanced Message Queuing Protocol) β ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π΅, ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ (ΠΈΠ»ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠΈ ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π· AMQP-Π±ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°, ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΡΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π·Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎΡΠΎΠΊΠΎΠ» AMQP Π²ΡΠ²Π΅ΠΆΠ΄Π° ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ:

ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ(ΡΠΎΡΠΊΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½) β Π² Π½Π΅Ρ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’ΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠΏΠ°ΡΠΊΠΈ. Π’Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ²ΡΠ·Π΅ΠΉ (binding) ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅Ρ ΠΈ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°queue(ΠΎΠΏΠ°ΡΠΊΠ°) β ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈΠ»ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠΎΡΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ ΠΊΡΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠΎΠΏΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°consumers(ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΎΡΠΈΡΠ΅)binding(ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅) β ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π² ΠΊΠΎΡ ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π°Ρ.
ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ ΡΠ°Π±ΠΎΡΠΈ Π½Π°Π΄ .
ΠΡΠ°ΡΠΊΠΎ Π·Π° Erlang
ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° . ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΈ BEAM.
ErlangΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°EricssonΠ² ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° 1980-ΡΠ΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²Π°, ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ Π±Π΅Π·ΠΎΡΠΊΠ°Π·Π½Π° ΡΠ°Π±ΠΎΡΠ° 99,999%.ErlangΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡΡΠ°ΡΠ»ΠΈ ΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²
ΠΡΠ°ΡΠΊΠΎ Π·Π° RabbitMQ
β ΡΠΎΠ²Π° Π΅ Π±ΡΠΎΠΊΠ΅Ρ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. Π’ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΠΏΠΎΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² . RabbitMQ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΈ Π΄ΠΎΠΏΡΠ»Π²Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. AMQP.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² RabbitMQ Π΅, ΡΠ΅ producer (ΠΈΠ·Π΄Π°ΡΠ΅Π») Π½Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°. ΠΡΡΡΠ½ΠΎΡΡ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ Π΄ΠΎΡΠΈ Π½Π΅ Π·Π½Π°Π΅ Π΄Π°Π»ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π² Π½ΡΠΊΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°.
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΎ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π°. ΠΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅, Π° ΠΎΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π° β Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅. ΠΠ±ΠΌΠ΅Π½ΡΡ ΡΡΡΠ±Π²Π° ΡΠΎΡΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π’ΡΡΠ±Π²Π° Π»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°? Π’ΡΡΠ±Π²Π° Π»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠΈ? ΠΠ»ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½ΠΎ.

Π Π°Π±ΠΎΡΠ°ΡΠ° Π² ΠΊΡΠ°ΡΡΠ΅ RabbitMQ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
- ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½
- ΠΠ±ΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ° Π³ΠΎ Π² Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅Π³ΠΎ ΠΈ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°
- ΠΠΏΠ°ΡΠΊΠ°ΡΠ° ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π‘Π°ΠΌΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ°
- Π©ΠΎΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π΅ Π³ΠΎΡΠΎΠ² Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°, ΡΡΡΠ²ΡΡΡΡ ΡΡΠ·Π΄Π°Π²Π° ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°
- ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π±ΡΠΎΠΊΠ΅ΡΠ°
- ΠΡΠΎΠΊΠ΅ΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΡΡΠΈΠ²Π° ΠΊΠΎΠΏΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΡΡΠΈΠ²Π° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΎΡ Π΄ΠΈΡΠΊΠ°
RPC
ΠΡΠΎΡΠ΅Ρ Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΄ΡΠΎΡΠΎ RabbitMQ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ RabbitMQ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ RPC. Π©ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈΠΊΠ»ΡΡΠΈ, RabbitMQ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π³ΠΎΡΠΎΠ² Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:

Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° AMQP ΠΊΠ°ΠΊΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ, ΡΠ°ΠΊΠ° ΠΈ ΡΡΡΠ²ΡΡΡΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΎΡΠ°ΠΊΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡ ΡΡΡΠ²ΡΡΠ°. ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΡΠ° ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Connection.Start β ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Start ΠΊΠ»Π°Ρ Connection.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ
ΠΠ° ΡΠ°ΠΊΠΎΠ²Π° ΠΎΠ±ΠΌΠ΅Π½ΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΡΡΠ²ΡΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅. ΠΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ. Π ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
ΠΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΡΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ°Π½Π°Π»Π°. ΠΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Erlang ΠΏΡΠΎΡΠ΅Ρ. ΠΠ΄Π½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΈ (). ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ°Π½Π°Π» ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ°ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ ΠΈΠΌΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° RabbitMQ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΊΠΎΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅.

ΠΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΈ ΠΊΠ°Π½Π°Π» Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° :
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΠΊΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
// ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΠ΅Π² ΡΠ΅ΡΠΈ
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}ΠΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π° Π²ΡΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ. ΠΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π²ΠΎΠ΄ΡΡ Π΄ΠΎ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΊΠ°Π½Π°Π»Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠ° ΠΎΡ ΡΠ°Π·ΠΈ Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΠ΄Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° RabbitMQ?
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ AMQP ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² RabbitMQ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ»ΡΠ³ΠΈΡΠ΅.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° IIOT ΠΏΡΠΎΡΠΎΠΊΠΎΠ» AMQP ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² RabbitMQ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ²ΡΡΠΈ (ΡΡΡΠ²ΡΡ-ΡΡΡΠ²ΡΡ). Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΡΡ ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½Π·ΠΎΡ ΠΈ ΡΡΡΠ²ΡΡ Π² Π½ΠΈΡΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ Ρ Π²ΠΈΡΠΎΠΊΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ (ΠΏΡΠ»Π½ΠΈΡΡ ΡΠΏΠΈΡΡΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π΅ ΠΈΠ·Π±ΡΠΎΠ΅Π½ Π½Π° ).
Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Exchanges.
ΠΡΡΠ·ΠΊΠΈ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
