ΠΠ±ΠΌΠ΅Π½ β ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΈΠ»ΠΈ ΡΠΎΡΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π°. Π Π½Π΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ±ΠΌΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ. ΠΠ½ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΡΠ²ΡΠ·Π΅ΠΉ (bindings) ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ.
ΠΠ±ΠΌΠ΅Π½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ . ΠΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ β ΡΡΠΎ ΡΡΡΠΎΠΊΠ° (ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ) Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
. 1 ΡΡΡΡΡΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π²ΡΠ΅Π³ΠΎ 1ΠΠ ΠΏΠ°ΠΌΡΡΠΈ.
Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅
- RabbitMQ. Π§Π°ΡΡΡ 3. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°ΠΌΠΈ
- RabbitMQ. Π§Π°ΡΡΡ 4. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅ΠΉΠΌΡ
- RabbitMQ. Π§Π°ΡΡΡ 5. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- RabbitMQ. Π§Π°ΡΡΡ 6. ΠΠ±Π·ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Federation ΠΈ Shovel
- RabbitMQ. Π§Π°ΡΡΡ 7. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ Connection ΠΈ ChanΠ΅Π»
- RabbitMQ. Π§Π°ΡΡΡ 8. RabbitMQ Π² .NET
- RabbitMQ. Π§Π°ΡΡΡ 9. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ
ΠΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ Π² ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°.ΠΠΎΠΈΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠΎΠΊ Π½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ..
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

Π rabbitmq ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π’ΠΎΠ²Π° ΠΏΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠ°Π²Π½ΡΠΌ ΠΊΠ»ΡΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ..
Π’Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°
Π’Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠ»ΡΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ.ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠ² (Π±ΡΠΊΠ²Ρ AZ ΠΈ az ΠΈ ΡΠΈΡΡΡ 0-9), ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΎΡΠΊΠΎΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ * ΠΈ #.
*β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΡΠΎΠ²Π½ΠΎ1Π΄ΡΠΌΠ°#β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π°0ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠ².
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ RabbitMQ 2.4.0 Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ° ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎ 145 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅. ΠΠΎΠ±ΠΈΠ»ΠΈΡΡ ΠΎΠ½ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΡΠ΅ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π΅ΡΠ΅Π²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΎΠ½Ρ a.b.c, a.*.b.c, a.#.c ΠΈ b.b.c Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ:

ΠΠΎΠΈΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠ½Ρ ΠΈ ΡΠ»Π΅Π΄ΡΡ ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ·.
ΠΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ:
- ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π΄ΠΎΠ±ΡΡ ΠΈΠ·Π±ΠΎΡ Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅ΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½
ΠΏΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠΈΠ»ΠΈfanout exchange - ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
*ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ#. ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°ΠΏΠΎ-Π±Π°Π²Π½ΠΎΠΏΡΡΠΌΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ
Fanout Exchange
Fanout exchange β Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ°ΡΠΊΠΈ Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡΡ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ.
ΠΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ:
RabbitMQΠ½Π΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ Π²Π»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΈΡΡΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ;- Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ;
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

Headers Exchange
Headers exchange β Π½Π°ΡΠΎΡΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΎΠΏΠ°ΡΠΊΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈ (ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ) ΡΠ²ΠΎΠΉΡΡΠ²Π° headers ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. headers ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Dictionary<ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ>.
ΠΠΊΠΎ Π² ΡΠ΅ΡΠ½ΠΈΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΊΠ»ΡΡ x-match ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ any, ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ° ΠΏΡΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈΡΠ΅ (ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ). Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° or.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΊΠ»ΡΡ x-match ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ all. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ° ΠΏΡΠΈ ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈΡΠ΅ (ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ). Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° and.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

ΠΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ:
- Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ
- Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. ΠΡΠΈΡΠΊΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ (ΠΊΠ»ΡΡ, ΡΡΠΎΠΉΠ½ΠΎΡΡ) Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ°
headersΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΎΡΡΠΈΡΠ°Ρ ΠΏΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎ-Π±Π°Π²Π½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ exchange.
Consistent-Hashing Exchange
Π’ΠΎΠ·ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π΅ ΠΈ Π½Π΅ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ Π² RabbitMQ.
Consistent-hashing exchange (exchange Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎ Ρ
Π΅ΡΠΈΡΠ°Π½Π΅) β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ
. Π‘Π²ΡΡΠ·Π°Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΡΡΠ°Π²Π° ΠΏΠΎ ΡΠ΅Π³Π»ΠΎ (ΡΡΠ»ΠΎΠ²Π½Π° ΡΡΡΠΎΠΊΠΎΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΎΡ 0 - n).
ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΠΎ ΡΠ΅Π³Π»ΠΎ Π½Π° ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅ β ΠΎΠΏΠΎΠ²Π΅ΡΡΡΠ²Π°, ΡΠ΅ Π² Π²ΡΡΠΊΠ° ΠΎΠΏΠ°ΡΠΊΠ° ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π²ΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ ΡΠ°ΠΌΠΎ Π² Π΅Π΄Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°). ΠΡΠ»Π½Π° Π³Π°ΡΠ°Π½ΡΠΈΡ Π·Π° ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π½ΡΠΌΠ°.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

Hash ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠ»ΡΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ headers Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ headers, ΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΏΠΎ ΡΠ΅Π³Π»ΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ»ΡΡΡΡ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ headers.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΌΠ°Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π΅Π΄Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°.
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡΠΈ (E2E)
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΡΡΠ΅Π· ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Exchange-to-Exchange (ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡΠΈ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° AMQP. Π’ΠΎΠ²Π° Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΡΡΡΡΠ°Π½ΠΈ RabbitMQ).
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:

ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° E2E ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡΠ΅, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΡΠ°ΡΡΡΡΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Exchange
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΡΡΠ°Π²Π° ΡΡΠ΅Π· ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ RPC Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΡΡΡΠ²Π΅ΡΠ°. ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Π° Exchange.Declare, ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- ΠΈΠΌΠ΅ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°
- ΡΠΈΠΏ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°
- Π΄ΡΡΠ³ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° :
//...
channel.ExchangeDeclare(
exchange: "my_exchange",
type: "direct",
durable: "false",
autoDelete: "false",
arguments: null
);
//...ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊβ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ. ΠΠΌΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎΡΠΈΠΏβ ΡΠΈΠΏ Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°durableβ ΠΏΡΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π½ΠΎ, ΡΠΎΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½. Π’ΠΎΠΉ ΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ΅Π»Π΅Π΅ ΡΠ»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²Π΅ΡΠ°/Π±ΡΠΎΠΊΠ΅ΡΠ°. ΠΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ°Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΡΠΎΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ²Π΅ΡΠ°/Π±ΡΠΎΠΊΠ΅ΡΠ° Π±ΡΠ΄Π΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½autoDeleteβ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅.ΠΠ±ΠΌΠ΅Π½ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΎΠΏΠ°ΡΠΊΠΈ ΡΠ° ΠΈΠ·ΡΡΠΈΡΠΈargumentsβ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ, ΡΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρalternative exchange(Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ). ΠΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΏΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡ ΠΌΠ°ΡΡΡΡΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ Π² Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ Π΄ΡΡΠ³ ΠΏΡΡ.

ΠΠΊΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΡΠ²ΡΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ RPC ΠΎΡΠ³ΠΎΠ²ΠΎΡ Exchange.DeclareOk. ΠΠΊΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ (Π²ΡΠ·Π½ΠΈΠΊΠ½Π° ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π·Π°ΡΠ²ΠΊΠ° Exchange.Declare), ΡΠΎΠ³Π°Π²Π° ΠΊΠ°Π½Π°Π»ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ ΠΎΡ ΡΡΡΠ²ΡΡΠ° ΡΡΠ΅Π· Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Channel.Close ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ , ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° ΠΊΠΎΠ΄ Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
ΠΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΊΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ β RabbitMQ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΈΡ
ΠΎ ΠΈΠ·ΡΡΠΈΡ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Exchange ΡΡΠ΅Π· Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΠ»ΠΈΠ·Π°ΠΌΠ΅ Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° RabbitMQ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π³ΠΎΡΡΡ (username: Π³ΠΎΡΡΡ ΠΈ password: Π³ΠΎΡΡΡ). ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π³ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΡΠ°ΠΌΠΎ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Ρ
ΠΎΡΡ. Π‘Π΅Π³Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π½Π° ΡΠ°Π±Π° Exchanges ΠΈ ΠΊΠ»ΠΈΠΊΠ²Π°ΠΌΠ΅ Π½Π° Add a new exchange. ΠΠΎΠΏΡΠ»Π²Π°ΠΌΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ°:

ΠΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π±ΡΡ
Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅. Π’ΡΠΊ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°ΠΌΠ΅, ΡΠ΅ Π°ΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅ΠΌ Internal, ΡΠΎΠ³Π°Π²Π° ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π·Π° E2E. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π» Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΡΠΌ ΡΠ°ΠΊΡΠ² ΠΎΠ±ΠΌΠ΅Π½.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° ΡΡΠ΅Π· Π³ΡΠ°Ρ. ΠΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅ Π³ΡΠ°ΡΠ°, Π΅ Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΏΡΡΠΈΡΠ°ΡΠ° Ρ Π²ΠΈΡΠΎΠΊ ΡΡΠ°ΡΠΈΠΊ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ (ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ). Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ.
ΠΠΊΠΎ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΊΡΠ°ΠΉΠ½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ fanout exchange, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π² 1:1 Π²ΡΡΠ·ΠΊΠ° Ρ ΠΊΠ»ΡΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΠΌΠ½Π΅ΡΠ΅, ΡΠ΅ fanout exchange Π½Π°ΠΉ-Π±ΡΡΠ·ΠΈΡΡ.
ΠΠΊΠΎ Π±ΡΠΎΡΡ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΡΠ΅ ΡΡΡΠ΅ΠΌΠΈ ΠΊΡΠΌ Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΎΡΡ, ΡΠΎΠ³Π°Π²Π° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ° ΠΈΠ»ΠΈ, Π°ΠΊΠΎ ΡΠ°Π±Π»ΠΎΠ½ΡΡ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΌΡΠ½Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ Π΅ ΠΏΠΎ-Π±ΡΡΠ· ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°.
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π·Π° Π½Π°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡΠ΅, ΡΠ°ΠΊΠ° ΠΈ Π½Π° Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΡΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΈ ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π±ΡΠΎΡ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΡΠ΅.
Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Queues ΠΈ Bindings.
ΠΡΡΠ·ΠΊΠΈ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
