RabbitMQ. ื˜ื™ื™ืœ 2. ืคืืจืฉื˜ืื ื“ ืขืงืกื˜ืฉืึทื ื’ืขืก

Exchange - ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจ ืึธื“ืขืจ ื•ื•ืขืงืกืœ ืคื•ื ื˜. ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ื’ืขืฉื™ืงื˜ ืฆื• ืขืก. Exchange ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฅ ืึธื ื–ืึธื’ ืื™ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืžืขืจ ืจื™ื™ืขืŸ. ืขืจ ืจื•ืฅ ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ืึท ืจื™ื™ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื‘ืืฉืืคืŸ ืงืึทื ืขืงืฉืึทื ื– (bindings) ืฆืฐื™ืฉืŸ ืื™ื ืื•ืŸ ื“ืขืจ ืจื™ื™.

Exchange ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ืคึผืจืึธืฆืขืก. ืคึฟืึทืจ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™ ืกื™ื‘ื•ืช exchange - ื“ืึธืก ืื™ื– ืึท ืฉื•ืจื” (ืœื™ื ืง ืฆื• ืึท ืžืึธื“ื•ืœืข ืžื™ื˜ ืงืึธื“ ื•ื•ื• ื“ื™ ืจื•ื˜ื™ื ื’ ืœืึธื’ื™ืง ืœื™ื’ื˜) ืื™ืŸ ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ืžื ืขืกื™ืึท. ืงืกื ื•ืžืงืก ื˜ื•ื™ื–ื ื˜ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจื– ื•ื•ืขื˜ ืคืึทืจื ื•ืฆืŸ ื‘ืœื•ื™ื– ืงืกื ื•ืžืงืกืžื‘ ืคื•ืŸ ื–ื›ึผืจื•ืŸ.

ื˜ื™ืฉ ืคื•ืŸ ืื™ื ื”ืึทืœื˜

  • RabbitMQ. ื˜ื™ื™ืœ 1. ื”ืงื“ืžื”. ืขืจืœืึทื ื’, AMQP ืื•ืŸ RPC
  • RabbitMQ. ื˜ื™ื™ืœ 2. ืคืืจืฉื˜ืื ื“ ืขืงืกื˜ืฉืึทื ื’ืขืก
  • RabbitMQ. ื˜ื™ื™ืœ 3. ืคืืจืฉื˜ืื ื“ ืงื™ื•ื– ืื•ืŸ ื‘ื™ื ื“ื™ื ื’ืก
  • RabbitMQ. ื˜ื™ื™ืœ 4. ืคืืจืฉื˜ืื ื“ ื•ื•ืึธืก ืึทืจื˜ื™ืงืœืขืŸ ืื•ืŸ ืจืึธืžืขืŸ ื–ืขื ืขืŸ
  • RabbitMQ. ื˜ื™ื™ืœ 5: ืึธื ื–ืึธื’ ืคึผื•ื‘ืœื™ืฉื™ื ื’ ืื•ืŸ ืงืึทื ืกืึทืžืฉืึทืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’
  • RabbitMQ. ื˜ื™ื™ืœ 6. ืึธืคึผืฉืึทืฆื•ื ื’ ืคื•ืŸ ื“ื™ ืคืขื“ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ืจื™ื“ืœ ืžืึทื“ื–ืฉื•ืœื–
  • RabbitMQ. ื˜ื™ื™ืœ 7. ื“ืขื˜ืึทื™ืœืก ื•ื•ืขื’ืŸ ืงืึทื ืขืงืฉืึทืŸ ืื•ืŸ ื˜ืฉืึทื ืขืœ
  • RabbitMQ. ื˜ื™ื™ืœ 8. RabbitMQ ืื™ืŸ. ื ืขืฅ
  • 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 Exchange

Fanout exchange - ืึทืœืข ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ืื™ื‘ืขืจื’ืขื’ืขื‘ืŸ ืฆื• ืึทืœืข ืงื™ื•ื– ืืคื™ืœื• ืื•ื™ื‘ ืึท ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœ ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ืึธื ื–ืึธื’.

ืคึฟืขื™ึดืงื™ื™ื˜ืŸ:

  • RabbitMQ ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœืขืŸ ืื•ืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก ื•ื•ืึธืก ื”ืื˜ ืึท positive ื•ื•ื™ืจืงื•ื ื’ ืื•ื™ืฃ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™. ื“ืึธืก ืื™ื– ื“ื™ ืคืึทืกื˜ืึทืกื˜ 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 ืžื•ื–ืŸ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ืฉืœื™ืกืœ ื ืึธืžืขืŸ ืื™ื™ื“ืขืจ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ืึธื ื–ืึธื’ ืจื•ื˜ื™ื ื’ ื•ื•ืึทืœื•ืขืก. ืกืœืึธื•ืขืจ ื•ื•ื™ ืื ื“ืขืจืข ื•ื•ืขืงืกืœ ื˜ื™ื™ืคึผืก.

ืงืึธื ืกื™ืกื˜ืขื ื˜-ื”ืึทืฉื™ื ื’ ืขืงืกื˜ืฉืึทื ื’ืข

ื“ืขื ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจ ืื™ื– ืฉื˜ืขืง ืืจื™ื™ืŸ ะธ ื ื™ื˜ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ะฒ RabbitMQ.

Consistent-hashing exchange (ื•ื•ืขืงืกืœ ืžื™ื˜ ืงืึธื ืกื™ืกื˜ืขื ื˜ ื›ืึทืฉื™ื ื’) - ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ืงื™ื•ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ืคึผืึธื˜ืขื ืฆื™ืขืœ ืจื™ืกื™ืคึผื™ืึทื ืฅ ืคื•ืŸ ืึท ืึธื ื–ืึธื’, ืื•ืŸ ื•ื•ืขืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืœืึทื ืกื™ืจืŸ ื“ื™ ืžืึทืกืข ืฆื•ื•ื™ืฉืŸ ื–ื™ื™. ื“ืขืจ ืงืฉืจ ืคื•ืŸ ืึท ืึธื ื–ืึธื’ ืžื™ื˜ ื“ื™ ืจื™ื™ ืึทืงืขืจื– ื“ื•ืจืš ื•ื•ืึธื’ (ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืฉื˜ืจื™ืงืœ ื•ื•ืขืจื˜ ืคื•ืŸ 0 - n).

ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ื•ื•ืึธื’ ืคื•ืŸ ืงื™ื•ื– - ื™ื ื“ื™ืงื™ื™ืฅ ืึทื– ื™ืขื“ืขืจ ืจื™ื™ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกื•ืžืข ืึทืจื˜ื™ืงืœืขืŸ (ื™ืขื“ืขืจ ืึธื ื–ืึธื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ ืจื™ื™). ืขืก ืื™ื– ืงื™ื™ืŸ ื’ืึทื ืฅ ื’ืึทืจืึทื ื˜ื™ืจืŸ ืคื•ืŸ ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ.

ื’ืจืึทืคื™ืงืึทืœ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ืึธื ื–ืึธื’ ืœื•ื™ืคืŸ:

RabbitMQ. ื˜ื™ื™ืœ 2. ืคืืจืฉื˜ืื ื“ ืขืงืกื˜ืฉืึทื ื’ืขืก

Hash ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœ ืึธื“ืขืจ ืคืึทืจืžืึธื’ headers ืึทืจื˜ื™ืงืœืขืŸ. ืื•ื™ื‘ ืึทืœืข ืืจื•ื™ืก ืึทืจื˜ื™ืงืœืขืŸ ื”ืึธื‘ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœืขืŸ ืึธื“ืขืจ headers, ื“ืขืžืึธืœื˜ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ื“ื•ืจืš ื•ื•ืึธื’. ืึทื ื“ืขืจืฉ, ื“ื™ ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืึธื“ืขืจ headers.

ื–ืึธืœ ื”ืขืœืคืŸ ื•ื•ืขืŸ ืงืึทื ืกื•ืžืขืจ ื˜ืจื•ืคึผื•ื˜ ื“ืึทืจืฃ ืฆื• ื•ื•ืึทืงืกืŸ ื”ืขื›ืขืจ ื•ื•ื™ ืึท ืœื™ื™ื–ื•ื ื’ ืžื™ื˜ ืงื™ื™ืคืœ ืงืึธื ืกื•ืžืขืจืก ื ื™ืฆืŸ ืึท ืื™ื™ืŸ ืจื™ื™.

ืงืึทืžื‘ื™ื™ื ื™ื ื’ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจื– (E2E)

ื“ื™ ื ืึทื˜ื•ืจ ืคื•ืŸ ืึทืœืข ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ื•ื•ืขืงืกืœ-ืฆื•-ื‘ื™ื™ึทื˜ (ืงืึทืžื‘ื™ื™ื ื™ื ื’ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจื– ืื™ื– ื ื™ืฉื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ AMQP. ื“ืึธืก ืื™ื– ืึท ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ืคื•ืŸ ื“ื™ ื–ื™ื™ึทื˜ RabbitMQ).

ื’ืจืึทืคื™ืงืึทืœ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ืึธื ื–ืึธื’ ืœื•ื™ืคืŸ:

RabbitMQ. ื˜ื™ื™ืœ 2. ืคืืจืฉื˜ืื ื“ ืขืงืกื˜ืฉืึทื ื’ืขืก

ืื•ื™ืฃ ื“ื™ ืงืึธืกื˜ ืคื•ืŸ E2E ืžื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืจืขื›ื˜ ืกืงืึทืœืึทื‘ืœืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืฆื• ื˜ืจืขืคืŸ ื‘ื™ื™ื“ืข ืงืจืึทื ื˜ ืื•ืŸ ื’ืจืึธื•ื™ื ื’ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ.

ืฉืึทืคึฟืŸ ืขืงืกื˜ืฉืึทื ื’ืข

ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ืึท ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจ ืึทืงืขืจื– ื ื™ืฆืŸ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก 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 ื˜ืึธืžืขืจ, ื“ืขืžืึธืœื˜ ื“ืขืจ ืกืขืจื•ื•ื™ืจืขืจ ื•ื•ืขื˜ ืฉื™ืงืŸ ื“ืขื ืงืœื™ืขื ื˜ ืึท ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก RPC ืขื ื˜ืคืขืจ Exchange.DeclareOk. ืื•ื™ื‘ ืฉืึทืคื•ื ื’ ืื™ื– ืื•ืžืžืขื’ืœืขืš (ื“ื™ ื‘ืงืฉื” ืื™ื– ืืคื’ืขื–ืื’ื˜ Exchange.Declare), ื“ืขืžืึธืœื˜ ื“ืขืจ ืงืึทื ืึทืœ ื•ื•ืขื˜ ืคืึทืจืžืึทื›ืŸ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ ืึท ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ื‘ืึทืคึฟืขืœ Channel.Close ืื•ืŸ ื“ืขืจ ืงืœื™ืขื ื˜ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืึทืŸ ืื•ื™ืกื ืึทื Operation InterruptedException, ื•ื•ืึธืก ื•ื•ืขื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ืขื ื˜ืขื•ืช ืงืึธื“ ืื•ืŸ ื–ื™ื™ึทืŸ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’.

ื ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ ืื™ื™ื“ืขืจ ืคึผืึธืกื˜ื™ื ื’ ืึทืจื˜ื™ืงืœืขืŸ. ืื•ื™ื‘ ืื™ืจ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืึธื ื–ืึธื’ ืฆื• ืขื˜ืœืขื›ืข ื ื™ื˜-ืขื’ื–ื™ืกื˜ืึทื ื˜ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉืขืจ - RabbitMQ ื•ื•ืขื˜ ืขืก ืฉื˜ื™ืœืขืจื”ื™ื™ื˜ ืืจืืคื ืขืžืขืŸ.

ืฉืึทืคึฟืŸ ืขืงืกื˜ืฉืึทื ื’ืข ื“ื•ืจืš GUI

ื’ื™ื™ืŸ ืฆื• ื“ื™ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ื˜ืึทืคืœื™ืข RabbitMQ ืื•ื ื˜ืขืจ ื‘ืึทื ื™ืฆืขืจ guest (ื‘ืึทื ื™ืฆืขืจ ื ืึธืžืขืŸ: guest ืื•ืŸ ืคึผืึทืจืึธืœ: guest). ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ guest ืงืขื ืขืŸ ื ืึธืจ ืคืึทืจื‘ื™ื ื“ืŸ ืคึฟื•ืŸ ืœืึธืงืึทืœื”ืึธืกื˜. ืื™ืฆื˜ ืœืึธืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ ืงื•ื•ื™ื˜ืœ Exchanges ืื•ืŸ ื’ื™ื˜ ืื•ื™ืฃ Add a new exchange. ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก:

RabbitMQ. ื˜ื™ื™ืœ 2. ืคืืจืฉื˜ืื ื“ ืขืงืกื˜ืฉืึทื ื’ืขืก

ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก ื–ืขื ืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื™ื‘ืŸ. ื“ืึธ ืžื™ืจ ื˜ืึธืŸ ืึทื– ืื•ื™ื‘ ืžื™ืจ ืฉื˜ืขืœืŸ Internal, ื“ืขืžืึธืœื˜ ื“ืขืจ ื•ื•ืขืงืกืœ ืงืขื ืขืŸ ื‘ืœื•ื™ื– ื–ื™ื™ืŸ ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ E2E. Producer ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ืฉื™ืงืŸ ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ืึทื–ืึท ืึท ื•ื•ืขืงืกืœ.

ืกืึธืฃ

ื•ื•ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืึท ืกื™ืกื˜ืขื, ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื˜ืึธืคึผืึธืœืึธื’ื™ ืจื•ื˜ื™ื ื’ ื ื™ืฆืŸ ืึท ื’ืจืึทืคื™ืง. ืื‘ืขืจ ืื™ื™ื“ืขืจ ืื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ื‘ื•ื™ืขืŸ ืึท ื’ืจืึทืคื™ืง, ืขืก ืื™ื– ื•ื•ืขืจื˜ ื›ื™ื™ืœื™ื™ื˜ื™ื ื’ ื“ื™ ืคึผืึทื˜ืก ืžื™ื˜ ื”ื•ื™ืš ืคืึทืจืงืขืจ, ื•ื•ื™ื™ึทืœ ื–ื™ื™ ื–ืขื ืขืŸ ื“ื™ ื•ื•ืึธืก ื“ืึทืจืคืŸ ื”ืขื›ืขืจ ื˜ืจื•ืคึผื•ื˜ (ืคืึธืจืฉื˜ืขืœื•ื ื’). ื•ื•ื™ื™ึทื˜ืขืจ, ืื™ืจ ืงืขื ืขืŸ ืงืœืึทืกื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคืึทืจืงืขืจ. ืื•ืŸ ื‘ืœื•ื™ื– ื“ืขืžืึธืœื˜ ืึธื ื”ื™ื™ื‘ืŸ ื‘ื ื™ืŸ.

ืื•ื™ื‘ ืื™ืŸ ื“ื™ ืงืึทื ืกื˜ืจืึทืงื˜ืึทื“ ื’ืจืึทืคื™ืง ืขืก ืื™ื– ืขื ื“ืœืขืš ืฉื˜ืขืœืŸ ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœืขืŸ, ืขืก ืื™ื– ื•ื•ืขืจื˜ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืขื˜ืœืขื›ืข fanout exchange, ื•ื•ืึธืก ื–ืขื ืขืŸ 1: 1 ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ื™ ืจื•ื˜ื™ื ื’ ืฉืœื™ืกืœ. ืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– fanout exchange ื“ื™ ืฉื ืขืœืกื˜ืข.

ืื•ื™ื‘ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจื•ืฅ ื˜ืขื ื“ื– ืฆื• ื•ืžืขื ื“ื™ืงื™ื™ึทื˜, ื“ืขืžืึธืœื˜ ืื™ืจ ื–ืึธืœ ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• topic exchange ืึธื“ืขืจ, ืื•ื™ื‘ ื“ื™ ืžื•ืกื˜ืขืจ ืื™ื– ื ื™ื˜ ื“ืืจืฃ, ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ direct exchnge, ื•ื•ื™ื™ึทืœ ืขืจ ืื™ื– ืฉื ืขืœืขืจ topic exchange.

ืงืึทืžื‘ืึทื ื™ื™ืฉืึทื ื– ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข exchange ื–ืึธืœ ื”ืขืœืคืŸ ืื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืจืขื›ื˜ ืื™ื™ื ืขืจ ืกืงืึทืœืึทื‘ืœืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ื˜ืจืขืคืŸ ื‘ื™ื™ื“ืข ืงืจืึทื ื˜ ืื•ืŸ ื’ืจืึธื•ื™ื ื’ ืกื™ืกื˜ืขื ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ.

ื ื•ืžืขืจ exchange ืื•ืŸ ื“ื™ ืงื™ื•ื– ื–ืึธืœ ื–ื™ื™ืŸ ืžื™ื ื™ืžืึทืœ ืงืึทืžืคึผืขืจื“ ืฆื• ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจื•ืฅ.

ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื˜ื™ืงืœ ืžื™ืจ ื•ื•ืขืœืŸ ืึธื ื”ื™ื™ื‘ืŸ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืงื™ื•ื– ืื•ืŸ ื‘ื™ื ื“ื™ื ื’ืก ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ.

ืจืขืคึฟืขืจืขื ืฆืŸ

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’