RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

Exchange - αž…αŸ†αžŽαž»αž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž¬αž”αŸ’αžαžΌαžšαŸ” αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αŸ…αžœαžΆαŸ” Exchange αž…αŸ‚αž€αž…αžΆαž™αžŸαžΆαžš αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž˜αž½αž™ αž¬αž…αŸ’αžšαžΎαž“αŸ” αž‚αžΆαžαŸ‹ αž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžšαž‘αŸ…αž‡αž½αžš αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž (bindings) αžšαžœαžΆαž„αž‚αžΆαžαŸ‹αž“αž·αž„αž‡αž½αžšαŸ”

Exchange αž˜αž·αž“β€‹αž˜αŸ‚αž“ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Erlang. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“ exchange - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αž“αŸ’αž‘αžΆαžαŸ‹ (αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΌαžŠαžŠαŸ‚αž›αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαžŸαŸ’αžαž·αžαž“αŸ…) αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ αž—αžΆαž–αžŸαŸ’αž›αŸαž€αžŸαŸ’αž›αžΆαŸ†αž„. αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš 1 αž–αžΆαž“αŸ‹αž“αžΆαž€αŸ‹αž“αžΉαž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαŸ’αžšαžΉαž˜αžαŸ‚ 1MB αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžαžΆαžšαžΆαž„αž˜αžΆαžαž·αž€αžΆ

  • 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 αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

Π’ rabbitmq αž˜αžΆαž“αž‚αŸ†αž“αž·αžαž˜αž½αž™αŸ” αž§αž”αž€αžšαžŽαŸαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž“αŸαŸ‡ direct exchange αž‚αŸ’αž˜αžΆαž“β€‹αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αžŸαžΆαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž€αžΆαž“αŸ‹αž‡αž½αžšαžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸ’αž˜αžΎαž“αžΉαž„ αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžš.

αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ’αžšαž’αžΆαž“αž”αž‘

Topic exchange - αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ direct exchange αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž•αŸ’αž›αžΌαžœαžŠαŸ„αž™αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‚αž“αŸ’αž›αžΉαŸ‡αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž‚αž“αŸ’αž›αžΉαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž“αŸαŸ‡αž”αžΎαž™αŸ„αž„αžαžΆαž˜αž‚αŸ†αžšαžΌ. αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαžŸαžΌαž˜αž”αŸ’αžšαžΎ 0 αž¬αž–αžΆαž€αŸ’αž™αž…αŸ’αžšαžΎαž“αž‘αŸ€αž (αž’αž€αŸ’αžŸαžš AZ ΠΈ az αž“αž·αž„αž›αŸαž 0-9) αž”αŸ†αž”αŸ‚αž€αžŠαŸ„αž™αž…αŸ†αž“αž»αž… αž€αŸαžŠαžΌαž…αž‡αžΆαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ * ΠΈ #.

  • * - αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ 1 αž–αžΆαž€αŸ’αž™
  • # - αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™ 0 αž¬αž–αžΆαž€αŸ’αž™αž…αŸ’αžšαžΎαž“αž‘αŸ€αž

αžαŸ†αžŽαžΆαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž“αŸƒαž›αŸ†αž αžΌαžšαžŸαžΆαžšαŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž€αŸ†αžŽαŸ‚ RabbitMQ 2.4.0 αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ topic exchange αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαžšαž αžΌαžαžŠαž›αŸ‹ 145 αžŠαž„αž›αžΏαž“αž‡αžΆαž„αŸ” αž–αž½αž€αž‚αŸαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αŸαŸ‡αžŠαŸ„αž™αžŽαŸ‚αž“αžΆαŸ†αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αŸ” αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž›αŸ†αž“αžΆαŸ†αž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αžˆαžΎαŸ” αž§αž‘αžΆαž αžšαžŽαŸαž‚αŸ†αžšαžΌ a.b.c, a.*.b.c, a.#.c ΠΈ b.b.c αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ†αžŽαžΆαž„αžŠαŸ„αž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž›αŸ†αž“αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž«αžŸ αž“αž·αž„αž”αž“αŸ’αžαž–αžΈαž€αŸ†αž–αžΌαž›αž‘αŸ…αž”αžΆαžαŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ:

  • αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸαŸ‡αž’αžΆαž…αž€αŸ’αž›αžΆαž™αž‡αžΆ αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αž, αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž‚αŸ†αžšαžΌαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž‡αžΆαž“αž·αž…αŸ’αž…αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” direct exchange ឬ fanout exchange
  • αž‚αŸ†αžšαžΌαžŠαŸ‚αž›αž”αŸ’αžšαžΎ * αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž‚αŸ†αžšαžΌαžŠαŸ‚αž›αž”αŸ’αžšαžΎ #.
  • topic exchange αž™αžΊαžαž‡αžΆαž„ direct exchange

αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš Fanout

Fanout exchange - αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž‚αŸ’αžšαž”αŸ‹αž‡αž½αžš αž‘αŸ„αŸ‡β€‹αž”αžΈβ€‹αž‡αžΆβ€‹αž‚αŸ’αžšαžΆαž”αŸ‹β€‹αž…αž»αž…β€‹αž•αŸ’αž›αžΌαžœβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαžΆαžšβ€‹αž€αŸβ€‹αžŠαŸ„αž™αŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ:

  • RabbitMQ αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœ αž“αž·αž„αž‚αŸ†αžšαžΌ αžŠαŸ‚αž›αž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž‘αŸ…αž›αžΎαž•αž›αž·αžαž—αžΆαž–αŸ” αž“αŸαŸ‡αž‚αžΊαž›αžΏαž“αž”αŸ†αž•αž»αžαŸ” exchange;
  • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αŸ”

αžαŸ†αžŽαžΆαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž“αŸƒαž›αŸ†αž αžΌαžšαžŸαžΆαžšαŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž‹αž˜αž€αžαžΆ

Headers exchange - αž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž‡αž½αžšαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž“αŸƒαž‚αžΌαž’αž…αž›αž“αž‘αŸ’αžšαž–αŸ’αž™ (αž‚αž“αŸ’αž›αžΉαŸ‡αžαž˜αŸ’αž›αŸƒ) headers αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹ αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŸαžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαŸ” headers αž‚αžΊαž‡αžΆ Dictionary<ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅>.

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαž“αžŸαŸ„αž–αž·αžŸαŸαžŸαž‘αŸ…αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜ x-match αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžαŸ’αžαž“αŸαž™ anyαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‚αžΌ (αž‚αž“αŸ’αž›αžΉαŸ‡ αžαž˜αŸ’αž›αŸƒ)αŸ” αž₯αžšαž·αž™αžΆαž”αžαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš or.

var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");

αžŸαŸ„αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ x-match αž˜αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒ all. αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‚αžΌ (αž‚αž“αŸ’αž›αžΉαŸ‡ αžαž˜αŸ’αž›αŸƒ) αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαŸ” αž₯αžšαž·αž™αžΆαž”αžαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš and.

αžαŸ†αžŽαžΆαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž“αŸƒαž›αŸ†αž αžΌαžšαžŸαžΆαžšαŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ:

  • αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“αž”αž“αŸ’αžαŸ‚αž˜
  • αž€αžΆαžšαž‚αžŽαž“αžΆαž”αž“αŸ’αžαŸ‚αž˜αŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ (αž€αžΌαž“αžŸαŸ„ αžαž˜αŸ’αž›αŸƒ) αž‚αžΌαž“αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž˜αž½αž™αŸ” headers αžαŸ’αžšαžΌαžœαžαŸ‚αžαž˜αŸ’αžšαŸ€αž”αžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡αž‚αž“αŸ’αž›αžΉαŸ‡ αž˜αž»αž“αž–αŸαž›αž‚αžŽαž“αžΆαžαž˜αŸ’αž›αŸƒαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαž“αŸƒαžŸαžΆαžšαŸ” αž™αžΊαžαž‡αžΆαž„αž”αŸ’αžšαž—αŸαž‘αž”αŸ’αžαžΌαžšαž”αŸ’αžšαžΆαž€αŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”.

Consistent-Hashing Exchange

αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸαŸ‡αž‚αžΊ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ ΠΈ αž˜αž·αž“αž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Π² RabbitMQ.

Consistent-hashing exchange (αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžš hashing αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹) - αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž˜αžΆαž“αž‡αž½αžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‡αžΆαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž’αŸ’αž“αž€αž‘αž‘αž½αž›αžŸαžΆαžšαž˜αž½αž™ αž αžΎαž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž»αž›αŸ’αž™αž—αžΆαž–αžšαžœαžΆαž„αž”αž“αŸ’αž‘αž»αž€αŸ” αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž‡αž½αžšαž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‘αž˜αŸ’αž„αž“αŸ‹ (αžαž˜αŸ’αž›αŸƒαžαŸ’αžŸαŸ‚αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž–αžΈ 0 - n).

αž‘αž˜αŸ’αž„αž“αŸ‹αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž‡αž½αžš - αž”αž„αŸ’αž αžΆαž‰αžαžΆαž‡αž½αžšαž“αžΈαž˜αž½αž™αŸ—αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“ αž”αŸ’αžšαž˜αžΆαžŽαž‡αžΆαž…αŸ†αž“αž½αž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” សអរ (αžŸαžΆαžšαž“αžΈαž˜αž½αž™αŸ—αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž‡αž½αžšαžαŸ‚αž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡)αŸ” αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž’αžΆαž“αžΆαž–αŸαž‰αž›αŸαž‰αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžŸαžΆαžšαž‡αžΆαž―αž€αžŸαžŽαŸ’αž‹αžΆαž“αž‘αŸαŸ”.

αžαŸ†αžŽαžΆαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž“αŸƒαž›αŸ†αž αžΌαžšαžŸαžΆαžšαŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

Hash αž‚αžŽαž“αžΆαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‚αž“αŸ’αž›αžΉαŸ‡αž•αŸ’αž›αžΌαžœ αž¬αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž· headers αžŸαžΆαžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΆαž“αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ ឬ headersαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž“αžΉαž„αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‘αž˜αŸ’αž„αž“αŸ‹αŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž‚αž“αŸ’αž›αžΉαŸ‡αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ ឬ headers.

αž‚αž½αžšαžαŸ‚αž‡αž½αž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΎαž“αž‘αžΎαž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ’αžšαžΎαž“αž“αžΆαž€αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‡αž½αžšαžαŸ‚αž˜αž½αž™αŸ”

αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš (E2E)

αž’αžΆαž€αž”αŸ’αž”αž€αž·αžšαž·αž™αžΆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αžΆαžšαž”αŸ’αžαžΌαžšαž”αŸ’αžšαžΆαž€αŸ‹ (αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹ AMQP. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž–αž·αž’αžΈαž€αžΆαžšαž–αžΈαž…αŸ†αž αŸ€αž„ RabbitMQ).

αžαŸ†αžŽαžΆαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž“αŸƒαž›αŸ†αž αžΌαžšαžŸαžΆαžšαŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž“αŸƒαž€αžΆαžš E2E αž™αžΎαž„αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž“αž·αž„αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž›αžΌαžαž›αžΆαžŸαŸ‹αŸ”

αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ RPC αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš Exchange.Declareαž αŸ…αž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαŸ–

  • αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš
  • αž”αŸ’αžšαž—αŸαž‘αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš
  • αž‡αž˜αŸ’αžšαžΎαžŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž exchange αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈ αž’αžαž·αžαž·αž‡αž“ RabbitMQ:

//...
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 (αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αŸ†αž“αž½αžŸ) αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαžΆαžšαž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαŸ†αžŽαžΎαžšαžαžΆαž˜αž‚αž“αŸ’αž›αž„αžŠαžΎαž˜αž”αžΆαž“αž‘αŸ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžαžΌαžšαž‡αŸ†αž“αž½αžŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΌαž“αžαžΆαž˜αž•αŸ’αž›αžΌαžœαž•αŸ’αžŸαŸαž„αŸ”

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž exchange αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αžΉαž„αž”αž‰αŸ’αž‡αžΌαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž±αŸ’αž™αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ RPC αž…αž˜αŸ’αž›αžΎαž™ Exchange.DeclareOk. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž‚αžΊαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸ (αž˜αžΆαž“αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ† Exchange.Declare), αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž†αžΆαž“αŸ‚αž›αž“αžΉαž„αž”αž·αž‘ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž’αžŸαž˜αž€αžΆαž› Channel.Close αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„ OperationInterruptedExceptionαžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαž€αŸ†αž αž»αžŸ αž“αž·αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αž–αŸαž›αž”αž„αŸ’αž αŸ„αŸ‡αžŸαžΆαžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αžŸαžΆαžšαž‘αŸ…αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ - RabbitMQ αž“αžΉαž„αžŠαž€αžœαžΆαž…αŸαž‰αžŠαŸ„αž™αžŸαŸ’αž„αŸ€αž˜αžŸαŸ’αž„αžΆαžαŸ‹αŸ”

αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαžΆαž˜αžšαž™αŸˆ GUI

αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž•αŸ’αž‘αžΆαŸ†αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ RabbitMQ αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ guest (αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹: guest αž“αž·αž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ– guest) αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ guest αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž”αžΆαž“αžαŸ‚αž–αžΈ localhost αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž•αŸ’αž‘αžΆαŸ†αž„ Exchanges αž αžΎαž™αž…αž»αž…αž›αžΎ Add a new exchange. αž”αŸ†αž–αŸαž‰αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αŸ–

RabbitMQ αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2. αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸƒαž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎαŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž€αŸ†αžŽαžαŸ‹ Internalαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαž…αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚ E2E. Producer αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž‰αžΎαžŸαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‚αž”αž“αŸαŸ‡αž”αžΆαž“αž‘αŸαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈ topology αž•αŸ’αž›αžΌαžœ αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αŸ’αžšαžΆαž αŸ’αžœαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž»αž“αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαžΆαž αŸ’αžœ αžœαžΆαž–αž·αžαž‡αžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžΌαžŸαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αž˜αžΆαž“αž…αžšαžΆαž…αžšαžŽαŸαžαŸ’αž–αžŸαŸ‹ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ αž–αž½αž€αž‚αŸαž‡αžΆαž’αŸ’αž“αž€αž‘αžΆαž˜αž‘αžΆαžš αž›αŸ†αž αžΌαžšαžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„ (αž€αžΆαžšαžŸαž˜αŸ’αžαŸ‚αž„) αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αž…αžΆαžαŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž…αžšαžΆαž…αžšαžŽαŸαŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαžΆαž„αžŸαž„αŸ‹αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαžΆαž αŸ’αžœαžŠαŸ‚αž›αž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αž˜αžΆαž“ αžŸαŸ†αžŽαž»αŸ†αž€αŸ†αžŽαžαŸ‹ αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžŸαž˜αŸ’αž›αžΉαž„αž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αžšαž€αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” fanout exchangeαžŠαŸ‚αž›αž˜αžΆαž“ 1:1 αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž‚αž“αŸ’αž›αžΉαŸ‡αž•αŸ’αž›αžΌαžœαŸ” αž™αžΎαž„αž…αžΆαŸ†αžαžΆ fanout exchange αž›αžΏαž“αž”αŸ†αž•αž»αžαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ†αž“αž½αž“αž•αŸ’αž›αžΌαžœ αž‘αŸ†αž“αŸ„αžšαž‘αŸ…αžšαž€αž—αžΆαž–αž‚αŸ’αž˜αžΆαž“αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹ topic exchange αž¬αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‚αŸ†αžšαžΌαž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ direct exchnge, αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž‚αžΆαžαŸ‹αž›αžΏαž“αž‡αžΆαž„ topic exchange.

αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆ exchange αž‚αž½αžšαžαŸ‚αž‡αž½αž™αž’αŸ’αž“αž€αžŸαŸ’αžœαŸ‚αž„αžšαž€αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž”αžΆαž“αŸ”αžŠαŸ‚αž›αž”αŸ†αž–αŸαž‰αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž“αž·αž„αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž›αžΌαžαž›αžΆαžŸαŸ‹αŸ”

αž…αŸ†αž“αž½αž“ exchange αž αžΎαž™αž‡αž½αžšαž‚αž½αžšαžαŸ‚αž˜αžΆαž“αžαž·αž…αžαž½αž…αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž…αŸ†αž“αž½αž“αž•αŸ’αž›αžΌαžœαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž™αžΎαž„αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž’αŸ†αž–αžΈ Queues αž“αž·αž„ Bindings αžŠαŸ„αž™αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹