Exchange
β ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΈΠ»ΠΈ ΡΠΎΡΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π°. Π Π½Π΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Exchange
ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ. ΠΠ½ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΡΠ²ΡΠ·Π΅ΠΉ (bindings
) ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ.
Exchange
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ exchange
β ΡΡΠΎ ΡΡΡΠΎΠΊΠ° (ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ) Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅
RabbitMQ. Π§Π°ΡΡΡ 1. Introduction. Erlang, AMQP ΠΈ RPC RabbitMQ. Π§Π°ΡΡΡ 2. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ Exchanges - RabbitMQ. Π§Π°ΡΡΡ 3. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ Queues ΠΈ Bindings
- RabbitMQ. Π§Π°ΡΡΡ 4. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅ΠΉΠΌΡ
- RabbitMQ. Π§Π°ΡΡΡ 5. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- RabbitMQ. Π§Π°ΡΡΡ 6. ΠΠ±Π·ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Federation ΠΈ Shovel
- RabbitMQ. Π§Π°ΡΡΡ 7. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎ Connection ΠΈ Chanel
- RabbitMQ. Π§Π°ΡΡΡ 8. RabbitMQ Π² .NET
- RabbitMQ. Π§Π°ΡΡΡ 9. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
Direct Exchange
Direct exchange
β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ Π² ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°. ΠΠΎΠΈΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠΎΠΊ Π½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
Π rabbitmq
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎ direct exchange
Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°Π²Π½ΡΠΌ ΠΊΠ»ΡΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Topic Exchange
Topic exchange
β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ direct exchange
Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠ»ΡΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 0
ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠ² (Π±ΡΠΊΠ²Ρ AZ
ΠΈ az
ΠΈ ΡΠΈΡΡΡ 0-9
), ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΎΡΠΊΠΎΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ *
ΠΈ #
.
*
β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΡΠΎΠ²Π½ΠΎ1
ΡΠ»ΠΎΠ²ΠΎ#
β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π°0
ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠ²
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ RabbitMQ 2.4.0
Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ topic exchange
ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎ 145
ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅. ΠΠΎΠ±ΠΈΠ»ΠΈΡΡ ΠΎΠ½ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΡΠ΅ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° a.b.c
, a.*.b.c
, a.#.c
ΠΈ b.b.c
Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ:
ΠΠΎΠΈΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠ½Ρ ΠΈ ΡΠ»Π΅Π΄ΡΡ ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ·.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ.ΠΊ. ΡΠ°Π±Π»ΠΎΠ½Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΎΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ
direct exchange
ΠΈΠ»ΠΈfanout exchange
- ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
*
Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ#
. topic exchange
ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅direct exchange
Fanout Exchange
Fanout exchange
β Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½ ΠΊΠ»ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
RabbitMQ
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉexchange
;- Π²ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
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
, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
- Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°
- ΡΠΈΠΏ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°
- Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ exchange
ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ
//...
channel.ExchangeDeclare(
exchange: "my_exchange",
type: "direct",
durable: "false",
autoDelete: "false",
arguments: null
);
//...
exchange
β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ. ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌtype
β ΡΠΈΠΏ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊΠ°durable
β Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡtrue
, ΡΠΎexchange
Π±ΡΠ΄Π΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ. ΠΠ½ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°/Π±ΡΠΎΠΊΠ΅ΡΠ°. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅false
, ΡΠΎexchange
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ/Π±ΡΠΎΠΊΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½autoDelete
β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅.Exchange
Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈarguments
β Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ΅ΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π°Π΄Π°ΡΡalternative exchange
(Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ). ΠΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΌΠ°ΡΡΡΡΡΡ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΡΠΈ.
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ exchange
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ RPC
ΠΎΡΠ²Π΅Ρ Exchange.DeclareOk
. ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΠΎΡΠΊΠ°Π· ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ Exchange.Declare
), ΡΠΎ ΠΊΠ°Π½Π°Π» Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Channel.Close
ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ β RabbitMQ
ΡΠΈΡ
ΠΎ ΡΠ΄Π°Π»ΠΈΡ Π΅Π³ΠΎ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Exchange ΡΠ΅ΡΠ΅Π· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°Π½Π΅Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° RabbitMQ
ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ guest
(username: guest
ΠΈ password: guest
). ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ guest
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Exchanges
ΠΈ Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° Add a new exchange
. ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π±ΡΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π° Π²ΡΡΠ΅. ΠΠ΄Π΅ΡΡ ΠΎΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°ΡΡ Internal
, ΡΠΎ ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ E2E
. Producer
Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΡΠ»ΠΈ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ Π³ΡΠ°ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎ, ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
fanout exchange
, ΠΊΠΎΡΠΎΡΡΠ΅ 1:1 ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ fanout exchange
ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ.
ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΌΠ°ΡΡΡΡΡΠΎΠ² ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΊ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° topic exchange
ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ direct exchnge
, Ρ.ΠΊ. ΠΎΠ½ Π±ΡΡΡΡΠ΅Π΅ topic exchange
.
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
exchange
Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΉΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠΈΠΌ, ΡΠ°ΠΊ ΠΈ ΡΠ°ΡΡΡΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ exchange
ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΡΡΡΡΡΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Ρ Queues ΠΈ Bindings.
Π‘ΡΡΠ»ΠΊΠΈ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com