Exchange
- α
ααα»α
ααααΆααααααΌαα¬ααααΌαα ααΆαααααΌαααΆαααααΎαα
ααΆα Exchange
α
ααα
αΆαααΆα αα
αααα»ααα½ααα½α α¬α
αααΎαα ααΆαα αααααΌαααΆααα
αα½α ααα’ααααΎααΆααααααΆαααααααΆααααααΎα (bindings
) αααΆαααΆαααα·ααα½αα
Exchange
αα·αβααα exchange
- αααααΊααΆαααααΆαα (αααααααΆαααα
αααΌαα»ααααααΆαααΌαααααααααα·ααααΆαααααααααΌααααα·ααα
) αα
αααα»αααΌαααααΆααα·αααααααααααααΆααααααΆαα½α
ααΆααΆαααΆαα·ααΆ
RabbitMQ αααααααΈ 1. ααα ααααΈααααΎαα Erlang, AMQP αα·α RPC RabbitMQ αααααααΈ 2. ααΆααααααΉαα’αααΈααΆαααααΆααααααΌα - RabbitMQ αααααααΈ 3. ααΆααααααΉαα’αααΈαα½α αα·αααΆαα α
- RabbitMQ αααααααΈ 4. ααΆααααααααΆαααΆαα½αααΉαα’αααΈαααααΆααΆα αα·αααα»α
- RabbitMQ αααααααΈ 5α ααΆαααααα»ααα αα·αααΆαααααΎααααΆααααΆααααααΆαααααα·αααααΆα
- RabbitMQ αααααααΈ 6. αα·αααααΆαααΌαα αααααΌαα»ααα ααααααα·α Shovel
- RabbitMQ αααααααΈ 7. ααααααΆααααα’α·αα’αααΈααΆααααααΆαααα·ααααΆα Chanel
- RabbitMQ αααααααΈ 8. RabbitMQ αα αααα»α .NET
- RabbitMQ αααααααΈ 9. ααΆααααα½ααα·αα·ααα
ααΆαααααΆααααααΌααααααααΆαα
Direct exchange
- ααααΎαα
αααα
αΆαααΆα
α αααααΌαααΆααα
αα½αααΆααααΆαα. ααΆαβααααΌαβααΆαβααααααααααΆαβαα
βα’αααβααααΆααααααΌαβαααβααΆαβααΆααααΆαα αααααΉαααααΌα α αΎαα
αΌααα
αααα»ααα½αααΆααα’αααααααααΌαααΆαααααΆαααα
α§αααααααααΆααααααΌααααααΆαα½αααΉααααααΉαααααΌαααααααααααΆα ααααΆααα
α»α
αααααααααΌαααΊααΆααααα’αααα. ααΆαααααΌααααααααΌαααΆαααααΎααααααααΎ αα·αα·αααααααα’αααααααααΆααααααΌα.
ααααΆαααααΆα ααα·αααααα αΌαααΆαα
Π rabbitmq
ααΆααααα·ααα½αα α§αααααααααΆααααααΌαααααΆαααΎαα ααα direct 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
Fanout exchange
- ααΆαααΆααα’ααααααΌαααΆααααααΌααα
ααααααα½α αααβααΈβααΆβααααΆααβα
α»α
βααααΌαβααααΌαβααΆαβαααααΆααβαααα»αβααΆαβααβαααα
αααααααα·ααα:
RabbitMQ
αα·αααααΎαααΆαααΆαα½αααααΆααα α»α αααααααααΌα αα·αααααΌ αααααΆαα₯αααα·αααα·αααααΆααα ααΎααα·αααΆαα αααααΊααΏααααα»αα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
ααααΌαααααααααααΆαααααααααααΉα αα»ααααααααΆααααααααααααααΌαααααΆαα ααΊαααΆαααααααααααΌαααααΆααααααααααα.
Consistent-Hashing Exchange
α’αααααααΆααααααΌααααααΊ RabbitMQ
.
Consistent-hashing exchange
(ααααΆααααααΌαααΆαα½αααΉαααΆα hashing ααΆααααΆαα) - ααααΎαα
αααααΆααα½αααΆα
αααΎααααααΆαααααΆαα»ααα’αααααα½αααΆααα½α α αΎααα
ααααααα’αααααααΌαααΆααα»αααααΆααααΆαααααα»αα ααΆαααααΆααααΆαααΆαα½ααα½αααΎαα‘αΎαααααααααα (αααααααααααΆαααααααααααΈ 0 - n
).
ααααααααααΎααααΆαααα½α - αααα αΆαααΆαα½αααΈαα½ααααΉαααα½αααΆα αααααΆαααΆα ααα½αααΌα ααααΆα ααΆα (ααΆαααΈαα½ααααΉαααααΌαααΆαααΆαααααα»ααα½ααααα½αααα»ααααα)α αα·αααΆαααΆαααΆααΆααααααααααΆαα ααα αΆαααΆαααΆα―ααααααΆαααα.
ααααΆαααααΆα ααα·αααααα αΌαααΆαα
Hash
ααααΆαααααα’ααααΎαααααΉαααααΌα α¬αααααααααααααα· headers
ααΆαα ααααα·αααΎααΆααααααΆαααααα»αααααΆααα’ααααΆαααααΆααα
α»α
αααααααααΌααααααααααΆ α¬ headers
αααααΆααααααΆαα
ααα
αΆαααΉαααΎαα‘αΎααααααααααα ααΎαα·αααΌα
αααααα αααααΉαααΆαααααΌαααΉαααααΌαααΆαααααΎ α¬ headers
.
αα½ααααα½ααα αααααααααααΌαααΆαα’αααααααΎααααΆααααΎαα‘αΎααααααααΆααααααααααΆαααΆαα½αα’αααααααΎααααΆααα αααΎαααΆαααααααααΎαα½ααααα½αα
ααΆααα½ααααα αΌαααααΆαααΆαα’αααααααΆααααααΌα (E2E)
α’αΆαααααα·αα·ααΆααααα’αααααααΆααααααΌαααΆααα’ααα’αΆα
ααααΌαααΆααααα
αΌαααααΆαααααααΎααααΆαααααα ααΆαααααΆααααααΌααα
ααΆαααααΌαααααΆαα (ααΆααα½ααααα
αΌαααααΆααααΆαααααΆααααααΌααα·αααααΌαααΆααα½ααααα
αΌααα
αααα»αααΆααααααΆαα AMQP
. αααααΊααΆααααααααααααααα·ααΈααΆαααΈα
αα αα RabbitMQ
).
ααααΆαααααΆα ααα·αααααα αΌαααΆαα
αα
αααα»αααΆαα
αααΆαααααΆα E2E
ααΎαα’αΆα
αααααααααΆαααααααααα’αΆα
ααααΎααΆαααααααΆαααΆαααααΉαααααΌα ααΎααααΈαααααααΆααααααΌαααΆααα
αα
α»αααααα αα·αααααααα»αααΌαααΆααα
αααααΎαααΆαααααΆααααααΌα
ααΆααααααΎαα§αααααααααΆααααααΌαααΎαα‘αΎααααααααΎααααΆααααα 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
ααΉαααααΆα
ααααααααααααααΆααα
αααααΎαααΆαααααΆααααααΌαααΆαααα GUI
α
αΌααα
ααΆααααααΆααααααααααα RabbitMQ
αα
αααααα’αααααααΎααααΆαα guest
(αααααβα’αααααααΎααααΆαα: guest
αα·αααΆααααααααΆααα guest
) ααΌαα
αααΆαααΆα’αααααααΎααααΆαα guest
α’αΆα
ααααΆααααΆαααααΈ localhost ααα»αααααα α₯α‘αΌααααααΌαα
αΌααα
ααΆααααααΆαα Exchanges
α αΎαα
α»α
ααΎ Add a new exchange
. ααααααααααααααααααα·α
ααΆαα
αααΎααααααααααααααααα·ααααΌαααΆααα·αααααΆααΆαααΎα αα
ααΈαααααΎααααααααΆααααΆααααα·αααΎααΎαααααα Internal
αααααΆαααα ααΆαααααΆααααααΌαα’αΆα
ααααΎαααααΆαααα E2E
. Producer
ααΉααα·αα’αΆα
ααααΎααΆααα
ααΆααααΆαααααΆααααααΌαααααααααΆαααα
ααα ααααΈααααα·ααααΆα
αα
ααααααααΎααααααααα ααΆααΆααααα½ααααα»αααΆααα·αααααΆα’αααΈ topology
ααααα·αααΎαα
αααα»αααααΆα αααααααΆαααΆααααααΆα αααα»αααααα ααααΆααα
α»α
αααααααααΌα αααααΆααααααΆααΆαααααααααααΉαααααααα
ααααΆα
αααΎαα fanout exchange
αααααΆα 1:1 ααΆααααααΉααααααΉαααααΌαα ααΎαα
αΆαααΆ fanout exchange
ααΏααααα»αα
ααααα·αααΎα
ααα½αααααΌα ααααααα
ααααΆαααααΆαααΈαααα
αααααααΆααααα’ααααα½αααααα
α·ααααα»αααΆαα topic exchange
α¬ααααα·αααΎααααΌαα·αααααΌαααΆα α’αααα’αΆα
ααααΎαααΎα direct exchnge
, αααααΆααα ααΆααααΏαααΆα topic exchange
.
ααΆααα½ααααα
αΌαααααΆααααΆααα»αααααΆ exchange
αα½ααααα½αα’ααααααααααααααΉαααααΌαα ααΆαααααααα
ααΆαααααααααααα’αΆα
ααααΎααΆαααααααΆαααΆααααααααααααΆααααααΌαααΆααααααααααα
αα
α»αααααα αα·αααααααα»αααΌαααΆααα
α
ααα½α exchange
α αΎααα½ααα½αααααΆααα·α
αα½α
ααΎαααααααααα
ααΉαα
ααα½αααααΌαα
αα αααα»αα’ααααααααααΆαα ααΎαααΉαα αΆααααααΎαααααααααα’αααΈ Queues αα·α Bindings ααααααα’α·ααααααααααα
ααα ααααΈααα
ααααα: www.habr.com