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 algorithm routing เบชเปเบฒเบฅเบฑเบš 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 Exchange

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)

เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบœเบนเป‰เปเบฅเบเบ›เปˆเบฝเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™ Exchange-to-Exchange (เบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเปเบฅเบเบ›เปˆเบฝเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ” AMQP. เบ™เบตเป‰เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบˆเบฒเบเบ”เป‰เบฒเบ™เบ‚เป‰เบฒเบ‡ RabbitMQ).

เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบเบฒเบŸเบดเบเบ‚เบญเบ‡เบเบฐเปเบชเบ‚เปเป‰เบ„เบงเบฒเบก:

RabbitMQ. เบžเบฒเบเบ—เบต 2. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™

เปƒเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡ E2E เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง.

เบชเป‰เบฒเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™

เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบฅเบเบ›เปˆเบฝเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ synchronous RPC เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ Exchange.Declareเป€เบญเบตเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™:

  • เบŠเบทเปˆโ€‹เบœเบนเป‰โ€‹เปเบฅเบโ€‹เบ›เปˆเบฝเบ™
  • เบ›เบฐเป€เบžเบ”เปเบฅเบเบ›เปˆเบฝเบ™
  • เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ exchange เป‚เบ”เบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ RabbitMQ.Client:

//...
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 เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบˆเบฐเบชเบปเปˆเบ‡เบฅเบนเบเบ„เป‰เบฒ synchronous RPC เบ•เบญเบš Exchange.DeclareOk. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹ เปเบกเปˆเบ™เบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ (เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ–เบทเบโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เป€เบชเบ”โ€‹ Exchange.Declare), เปเบฅเป‰เบง เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบˆเบฐเบ›เบดเบ” เป€เบŠเบตเบšเป€เบงเบตเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ asynchronous Channel.Close เปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™.

เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบฒเบ”เบ‚เปเป‰เบ„เบงเบฒเบก. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบœเบตเบโ€‹เปเบœเปˆโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบเบฑเบšโ€‹เบœเบนเป‰โ€‹เปเบฅเบโ€‹เบ›เปˆเบฝเบ™โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹เบšเบฒเบ‡ - RabbitMQ เบˆเบฐเป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบเบขเปˆเบฒเบ‡เบ‡เบฝเบšเป†.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบœเปˆเบฒเบ™ GUI

เป„เบ›เบ—เบตเปˆเบเบฐเบ”เบฒเบ™ admin RabbitMQ เบžเบฒเบเปƒเบ•เป‰เบœเบนเป‰เปƒเบŠเป‰ guest (เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰: guest เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™: guest). เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰ guest เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฒเบ localhost เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเปเบ–เบš Exchanges เปเบฅเบฐเปƒเบซเป‰เบ„เบฅเบดเบเปƒเบชเปˆ Add a new exchange. เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปƒเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”:

RabbitMQ. เบžเบฒเบเบ—เบต 2. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™

เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” Internal, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ E2E. Producer เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ›เบซเบฒเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰.

เบชเบฐเบซเบฅเบธเบš

เป€เบกเบทเปˆเบญเบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบš, เบกเบฑเบ™เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ topology เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡. เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเป‰เบฒเบ‡เบเบฒเบŸ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบชเบนเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒ เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹ เบœเปˆเบฒเบ™โ€‹เบชเบนเบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹ (เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”). เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™. เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡.

เบ–เป‰เบฒเบขเบนเปˆเปƒเบ™เบเบฒเบŸเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบกเบต เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ” routing keys, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบซเบผเบฒเบ fanout exchange, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™ 1:1 เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆเป„เบ”เป‰เบงเปˆเบฒ fanout exchange เป„เบงเบ—เบตเปˆเบชเบธเบ”.

เบ–เป‰เบฒเบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ เปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐ infinity, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบš topic exchange เบซเบผเบท, เบ–เป‰เบฒเปเบกเปˆเปเบšเบšเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบ direct exchnge, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบฅเบฒเบงเป„เบงเบ‚เบถเป‰เบ™ topic exchange.

เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹เบ‚เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹ exchange เบ„เบงเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰, เป€เบŠเบดเปˆเบ‡เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบšเบปเบšเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง.

เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ exchange เปเบฅเบฐเบ„เบดเบงเบ„เบงเบ™เบˆเบฐเบกเบตเบซเบ™เป‰เบญเบเป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบดเบงเปเบฅเบฐเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เป€เบญเบเบฐเบชเบฒเบ™

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™