RabbitMQ. 2๋ถ€. ๊ตํ™˜ ์ดํ•ดํ•˜๊ธฐ

Exchange - ๊ตํ™˜๊ธฐ ๋˜๋Š” ๊ตํ™˜ ์ง€์ . ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. Exchange ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค ํ•˜๋‚˜ ์ด์ƒ์˜ ๋Œ€๊ธฐ์—ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ํ๋กœ ๋ผ์šฐํŒ… ์ƒ์„ฑ๋œ ์—ฐ๊ฒฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ(bindings) ๊ทธ์™€ ๋Œ€๊ธฐ์—ด ์‚ฌ์ด.

Exchange ~์ด ์•„๋‹ˆ๋‹ค. ์–ผ๋žญ ํ”„๋กœ์„ธ์Šค. ํ™•์žฅ์„ฑ ์ด์œ ๋กœ exchange - ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋ผ์ธ(๋ผ์šฐํŒ… ๋กœ์ง์ด ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ๋งํฌ)์ž…๋‹ˆ๋‹ค. ๊ธฐ์–ต์ƒ์‹ค์ฆ. 1๊ฐœ์˜ ๊ตํ™˜๊ธฐ๋Š” 1MB์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

์ฐจ๋ก€

  • RabbitMQ. ํŒŒํŠธ 1. ์†Œ๊ฐœ. Erlang, AMQP ๋ฐ RPC
  • RabbitMQ. 2๋ถ€. ๊ตํ™˜ ์ดํ•ดํ•˜๊ธฐ
  • RabbitMQ. 3๋ถ€. ๋Œ€๊ธฐ์—ด ๋ฐ ๋ฐ”์ธ๋”ฉ ์ดํ•ด
  • RabbitMQ. ํŒŒํŠธ 4. ๋ฉ”์‹œ์ง€ ๋ฐ ํ”„๋ ˆ์ž„ ์ฒ˜๋ฆฌ
  • RabbitMQ. 5๋ถ€: ๋ฉ”์‹œ์ง€ ๊ฒŒ์‹œ ๋ฐ ์‚ฌ์šฉ ์„ฑ๋Šฅ
  • RabbitMQ. ํŒŒํŠธ 6. Federation ๋ฐ Shovel ๋ชจ๋“ˆ ๊ฐœ์š”
  • RabbitMQ. Part 7. ์—ฐ๊ฒฐ ๋ฐ ์ƒค๋„ฌ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด
  • RabbitMQ. ํŒŒํŠธ 8. .NET์˜ 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 - ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ ๋ชจ๋“  ๋Œ€๊ธฐ์—ด๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์— ๋ผ์šฐํŒ… ํ‚ค๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํŠน์ง• :

  • 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 ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ… ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์ „์— ํ‚ค ์ด๋ฆ„๋ณ„๋กœ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตํ™˜ ์œ ํ˜•๋ณด๋‹ค ๋Š๋ฆผ.

์ผ๊ด€๋œ ํ•ด์‹ฑ ๊ตํ™˜

์ด ๊ตํ™˜๊ธฐ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ะธ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์Œ ะฒ RabbitMQ.

Consistent-hashing exchange (์ผ๊ด€๋œ ํ•ด์‹ฑ์œผ๋กœ ๊ตํ™˜) - ์ž ์žฌ์ ์ธ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž๊ฐ€ ๋  ๋Œ€๊ธฐ์—ด์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ์™€ ์ด๋“ค ์‚ฌ์ด์˜ ๋กœ๋“œ ๊ท ํ˜•์„ ์กฐ์ •ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ์™€ ๋ฉ”์‹œ์ง€์˜ ์—ฐ๊ฒฐ์€ ๊ฐ€์ค‘์น˜(์กฐ๊ฑด๋ถ€ ๋ฌธ์ž์—ด ๊ฐ’)์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 0 - n).

๋Œ€๊ธฐ์—ด์˜ ๋“ฑ๊ฐ€ ๊ฐ€์ค‘์น˜ - ๊ฐ ๋Œ€๊ธฐ์—ด์ด ์ˆ˜์‹ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๊ฐ™์€ ๊ธˆ์•ก ๋ฉ”์‹œ์ง€(๊ฐ ๋ฉ”์‹œ์ง€๋Š” ํ•˜๋‚˜์˜ ๋Œ€๊ธฐ์—ด์—๋งŒ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค) ๋ฉ”์‹œ์ง€์˜ ๊ท ์ผํ•œ ๋ฐฐํฌ๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์žฅ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค..

๋ฉ”์‹œ์ง€ ํ๋ฆ„์˜ ๊ทธ๋ž˜ํ”ฝ ํ‘œํ˜„:

RabbitMQ. 2๋ถ€. ๊ตํ™˜ ์ดํ•ดํ•˜๊ธฐ

Hash ๋ผ์šฐํŒ… ํ‚ค ๋˜๋Š” ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ๋จ headers ๋ฉ”์‹œ์ง€. ๊ฒŒ์‹œ๋œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ผ์šฐํŒ… ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋˜๋Š” headers, ๊ทธ๋Ÿฌ๋ฉด ๋ถ„ํฌ๋Š” ๋ฌด๊ฒŒ๋ณ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ผ์šฐํŒ… ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. headers.

๋‹จ์ผ ๋Œ€๊ธฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๊ฐ€ ์žˆ๋Š” ์†”๋ฃจ์…˜๋ณด๋‹ค ์†Œ๋น„์ž ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์—ฌ์•ผ ํ•  ๋•Œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ตํ™˜๊ธฐ ๊ฒฐํ•ฉ(E2E)

ํ†ต์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ตํ™˜๊ธฐ์˜ ๋™์ž‘์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตํ™˜ ๋Œ€ ๊ตํ™˜ (๊ตํ™˜๊ธฐ ๊ฒฐํ•ฉ์€ ์‚ฌ์–‘์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AMQP. ์ด๊ฒƒ์€ ์ธก๋ฉด์—์„œ ํ”„๋กœํ† ์ฝœ์„ ํ™•์žฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. RabbitMQ).

๋ฉ”์‹œ์ง€ ํ๋ฆ„์˜ ๊ทธ๋ž˜ํ”ฝ ํ‘œํ˜„:

RabbitMQ. 2๋ถ€. ๊ตํ™˜ ์ดํ•ดํ•˜๊ธฐ

์ž‘์„ฑ์ž E2E ํ˜„์žฌ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ์ฆ๊ฐ€ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตํ™˜ ์ƒ์„ฑ

๊ตํ™˜๊ธฐ ์ƒ์„ฑ์€ ๋™๊ธฐ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. RPC ์„œ๋ฒ„์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. Exchange.Declare, ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ๋จ:

  • ๊ตํ™˜๊ธฐ ์ด๋ฆ„
  • ๊ตํ™˜๊ธฐ ์œ ํ˜•
  • ๋‹ค๋ฅธ ์˜ต์…˜

์ž‘์„ฑ์˜ˆ exchange ...์— ์˜ํ•˜์—ฌ ํ† ๋ผMQ.ํด๋ผ์ด์–ธํŠธ:

//...
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๋ฅผ ํ†ตํ•ด Exchange ์ƒ์„ฑ

๊ด€๋ฆฌ์ž ํŒจ๋„๋กœ ์ด๋™ RabbitMQ ์‚ฌ์šฉ์ž ์•„๋ž˜ guest (์‚ฌ์šฉ์ž ์ด๋ฆ„: guest ๋ฐ ์•”ํ˜ธ: guest). ์‚ฌ์šฉ์ž๋Š” guest localhost์—์„œ๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํƒญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. Exchanges ๊ทธ๋ฆฌ๊ณ  ํด๋ฆญ Add a new exchange. ์†์„ฑ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

RabbitMQ. 2๋ถ€. ๊ตํ™˜ ์ดํ•ดํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ์†์„ฑ์€ ์œ„์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•˜๋ฉด Internal, ๊ตํ™˜์€ ๋‹ค์Œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. E2E. Producer ๊ทธ๋Ÿฌํ•œ ๊ตํ™˜์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ† ํด๋กœ์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํŒ… ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ž˜ํ”„ ์ž‘์„ฑ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ๊ฒฝ๋กœ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์š”๊ตฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด๋‹ค ๋” ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰ (์„ฑ๋Šฅ). ๋‹ค์Œ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ์•ผ ๊ฑด๋ฌผ์„ ์ง“๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ๋œ ๊ทธ๋ž˜ํ”„์— ์œ ํ•œ ์ง‘ํ•ฉ ๋ผ์šฐํŒ… ํ‚ค๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. fanout exchange, ๋ผ์šฐํŒ… ํ‚ค์™€ 1:1๋กœ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค fanout exchange ๊ฐ€์žฅ ๋น ๋ฅธ.

๋…ธ์„  ์ˆ˜์˜ ๊ฒฝ์šฐ ๋ฌดํ•œ๋Œ€๋กœ ๊ฐ€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค, ๊ทธ๋ ‡๋‹ค๋ฉด ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. topic exchange ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. direct exchnge, ์™œ๋ƒํ•˜๋ฉด ๊ทธ ์‚ฌ๋žŒ์ด ๋” ๋น ๋ฅด๋‹ค topic exchange.

๋‹ค์–‘ํ•œ ์กฐํ•ฉ exchange ๋‹น์‹ ์ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ, ์ด๋Š” ํ˜„์žฌ ๋ฐ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜ exchange ๊ทธ๋ฆฌ๊ณ  ๊ฒฝ๋กœ ์ˆ˜์— ๋น„ํ•ด ๋Œ€๊ธฐ์—ด์ด ์ตœ์†Œํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ํ์™€ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€