RabbitMQред рднрд╛рдЧ 2. рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд╣рд░реВ рдмреБрдЭреНрджреИ

Exchange - рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ рд╡рд╛ рд╡рд┐рдирд┐рдордп рдмрд┐рдиреНрджреБред рдпрд╕рдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЗрдиреНрдЫред Exchange рд╕рдиреНрджреЗрд╢ рд╡рд┐рддрд░рдг рдЧрд░реНрджрдЫ рдПрдХ рд╡рд╛ рдмрдвреА рд▓рд╛рдЗрдирдорд╛ред рдЙрд╣рд╛рдБрд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рд▓рд╛рдЗрдирдорд╛ рдкрдард╛рдЙрдБрдЫ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЬрдбрд╛рдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд (bindings) рдЙрд╣рд╛рдБ рд░ рд▓рд╛рдо рдмреАрдЪрдорд╛ред

Exchange рд╣реЛрдИрди Erlang рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ exchange - рдпреЛ рдПрдХ рд▓рд╛рдЗрди рд╣реЛ (рдХреЛрдбрдХреЛ рд╕рд╛рде рдПрдХ рдореЛрдбреНрдпреБрд▓рдХреЛ рд▓рд┐рдЩреНрдХ рдЬрд╣рд╛рдБ рд░реВрдЯрд┐рдЩ рддрд░реНрдХ рд╣реБрдиреНрдЫ) рдирд┐рд░реНрдорд┐рдд рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдореЗрдиреЗрд╕рд┐рдпрд╛ред рез рд╣рдЬрд╛рд░ рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рд▓реЗ рез рдПрдордмреА рдореЗрдореЛрд░реА рдорд╛рддреНрд░ рдЦрдкрдд рдЧрд░реНрдиреЗрдЫред

рд╕рд╛рдордЧреНрд░реАрдХреЛ рддрд╛рд▓рд┐рдХрд╛

  • RabbitMQред рднрд╛рдЧ рез. рдкрд░рд┐рдЪрдпред Erlang, AMQP рд░ RPC
  • RabbitMQред рднрд╛рдЧ 2. рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд╣рд░реВ рдмреБрдЭреНрджреИ
  • RabbitMQред рднрд╛рдЧ 3. рд▓рд╛рдорд╣рд░реВ рд░ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдмреБрдЭреНрджреИ
  • RabbitMQред рднрд╛рдЧ 4. рд╕рдиреНрджреЗрд╢ рд░ рдлреНрд░реЗрдорд╣рд░реВ рдХреЗ рд╣реЛ рдмреБрдЭреНрджреИ
  • RabbitMQред рднрд╛рдЧ рел: рд╕рдиреНрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рди рд░ рдЙрдкрднреЛрдЧ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди
  • RabbitMQред рднрд╛рдЧ 6. рдорд╣рд╛рд╕рдВрдШ рд░ рдлрд╛рд╡рдбрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛
  • RabbitMQред рднрд╛рдЧ 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 рдПрдХреНрд╕рдЪреЗрдиреНрдЬ

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 рд╕рд╣рдпреЛрдЧрдХреЛ рд╕рд╛рде 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди