Exchange
- рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ рд╡рд╛ рд╡рд┐рдирд┐рдордп рдмрд┐рдиреНрджреБред рдпрд╕рдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЗрдиреНрдЫред Exchange
рд╕рдиреНрджреЗрд╢ рд╡рд┐рддрд░рдг рдЧрд░реНрджрдЫ рдПрдХ рд╡рд╛ рдмрдвреА рд▓рд╛рдЗрдирдорд╛ред рдЙрд╣рд╛рдБрд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рд▓рд╛рдЗрдирдорд╛ рдкрдард╛рдЙрдБрдЫ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЬрдбрд╛рдирд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд (bindings
) рдЙрд╣рд╛рдБ рд░ рд▓рд╛рдо рдмреАрдЪрдорд╛ред
Exchange
рд╣реЛрдИрди 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
рддреНрдпрд╣рд╛рдБ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ред рдпреЛ direct exchange
рдирд╛рдо рдЫреИрдиред рдпрджрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗ, рд╕рдиреНрджреЗрд╢ рдмрд░рд╛рдмрд░ рдирд╛рдордХреЛ рд╕рд╛рде рд▓рд╛рдордорд╛ рдкрдард╛рдЗрдиреЗрдЫ рд╕рдиреНрджреЗрд╢ рдорд╛рд░реНрдЧ рдХреБрдЮреНрдЬреА.
рд╡рд┐рд╖рдп рд╡рд┐рдирд┐рдордп
Topic exchange
- рд╕рдорд╛рди direct exchange
рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреА рддреБрд▓рдирд╛ рдЧрд░реЗрд░ рдЪрдпрдирд╛рддреНрдордХ рд░рд╛рдЙрдЯрд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред рддрд░, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХреБрдЮреНрдЬреА рджрд┐рдЗрдПрдХреЛ рдЫ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЕрдиреБрд╕рд╛рд░ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН 0
рд╡рд╛ рдзреЗрд░реИ рд╢рдмреНрджрд╣рд░реВ (рдЕрдХреНрд╖рд░рд╣рд░реВ AZ
╨╕ az
рд░ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ 0-9
), рдмрд┐рдиреНрджреБ, рд╕рд╛рдереИ рдкреНрд░рддреАрдХрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд *
╨╕ #
.
*
- рдареНрдпрд╛рдХреНрдХреИ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ1
рд╢рдмреНрдж#
- рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ0
рд╡рд╛ рдзреЗрд░реИ рд╢рдмреНрджрд╣рд░реВ
рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрд┐ RabbitMQ 2.4.0
рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рд░реНрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо topic exchange
рд╕рдореНрдо рдХрд╛рдо рдЧрд░реНрди рдерд╛рд▓реЗ 145
рдкрдЯрдХ рдЫрд┐рдЯреЛред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░рд┐рдЪрдп рдЧрд░реЗрд░ рдпреЛ рд╣рд╛рд╕рд┐рд▓ рдЧрд░реЗ a.b.c
, a.*.b.c
, a.#.c
╨╕ b.b.c
рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдиреЗрдЫ:
рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рдЙрди рдЦреЛрдЬ рд░реВрдЯрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рдорд╛рдерд┐рджреЗрдЦрд┐ рддрд▓рд╕рдореНрдо рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдЫред
рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:
- рдпреЛ рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рдХреЛ рдкреНрд░рдпреЛрдЧ рд╣реБрди рд╕рдХреНрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдпрдХреЛ рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд▓реНрдк, рдХрд┐рдирднрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рд╕рдзреИрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рддрд╛рдХрд┐ рд╕рдиреНрджреЗрд╢ рдЙрд╣реА рддрд░рд┐рдХрд╛рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдиреНрдЫ
direct exchange
рд╡рд╛fanout exchange
- рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ
*
рдзреЗрд░реИ рдЫрд┐рдЯреЛрдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рднрдиреНрджрд╛#
. topic exchange
рдврд┐рд▓реЛdirect exchange
Fanout рдПрдХреНрд╕рдЪреЗрдиреНрдЬ
Fanout exchange
- рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд╕рдмреИ рд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рд╕рдиреНрджреЗрд╢рдорд╛ рд░реВрдЯрд┐рдЩ рдХреБрдЮреНрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рднрдП рдкрдирд┐ред
рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:
RabbitMQ
рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреАрд╣рд░реВ рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИрди рдЬрд╕рд▓реЗ рдЙрддреНрдкрд╛рджрдХрддреНрд╡рдорд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдЫ ред рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рд╣реЛexchange
;- рд╕рдмреИ рдЙрдкрднреЛрдХреНрддрд╛рд╣рд░реВ рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ;
рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
рд╣реЗрдбрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ
Headers exchange
- (рдХреБрдЮреНрдЬреА, рдорд╛рди) рдЧреБрдг рдЬреЛрдбреАрд╣рд░реВрдХреЛ рддреБрд▓рдирд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рд▓рд╛рдорд╣рд░реВрдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрдБрджрдЫ headers
рдмрд╛рдЗрдиреНрдбрд┐рдЩ рд░ рд╕рдорд╛рди рд╕рдиреНрджреЗрд╢ рдЧреБрдгрд╣рд░реВред headers
рдПрдХ рдЫ Dictionary<╨║╨╗╤О╤З, ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╡>
.
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╢рдмреНрджрдХреЛрд╢рдорд╛ рд╡рд┐рд╢реЗрд╖ рдХреБрдЮреНрдЬреА рдердкреНрдиреБрднрдпреЛ рднрдиреЗ x-match
рдЕрд░реНрде рд╕рдВрдЧ any
, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдиреНрджреЗрд╢ рд░рд╛рдЙрдЯ рд╣реБрдиреНрдЫ рдпрджрд┐ рддреНрдпрд╣рд╛рдБ (рдХреБрдЮреНрдЬреА, рдорд╛рди) рдЬреЛрдбреАрд╣рд░реВрдХреЛ рдЖрдВрд╢рд┐рдХ рдорд┐рд▓рд╛рди рдЫред рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░реЗрдЯрд░ рдЬрд╕реНрддреИ рдЫ or
.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреБрдЮреНрдЬреА x-match
рдорд╛рди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ all
ред рдпрд╕рдХреЛ рдорддрд▓рдм (рдХреБрдЮреНрдЬреА, рдорд╛рди) рдЬреЛрдбреАрд╣рд░реВ рдареНрдпрд╛рдХреНрдХреИ рдореЗрд▓ рдЦрд╛рдПрдорд╛ рд╕рдиреНрджреЗрд╢ рд░реБрдЯ рд╣реБрдиреНрдЫред рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░реЗрдЯрд░ рдЬрд╕реНрддреИ рдЫ and
.
рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:
- рдердк рд▓рдЪрд┐рд▓реЛрдкрди
- рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдореНрдкреНрдпреБрдЯреЗрд╢рдирд▓ рдУрднрд░рд╣реЗрдбред рд╡рд┐рд╢реЗрд╖рддрд╛рдХрд╛ рд╕рдмреИ (рдХреБрдЮреНрдЬреА, рдорд╛рди) рдЬреЛрдбреАрд╣рд░реВ
headers
рд╕рдиреНрджреЗрд╢ рд░рд╛рдЙрдЯрд┐рдЩ рдорд╛рдирд╣рд░реВ рдХрдореНрдкреНрдпреБрдЯ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдХреБрдЮреНрдЬреА рдирд╛рдорджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рд╣реБрдиреБрдкрд░реНрдЫред рдЕрдиреНрдп рд╡рд┐рдирд┐рдордп рдкреНрд░рдХрд╛рд░рд╣рд░реВ рднрдиреНрджрд╛ рдврд┐рд▓реЛ.
рд▓рдЧрд╛рддрд╛рд░-рд╣реНрдпрд╛рд╕рд┐рдЩ рдПрдХреНрд╕рдЪреЗрдиреНрдЬ
рдпреЛ рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ рд╣реЛ RabbitMQ
.
Consistent-hashing exchange
(рд╕рддрдд рд╣реНрдпрд╛рд╕рд┐рдЩрдХреЛ рд╕рд╛рде рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН) - рд╕рдиреНрджреЗрд╢рдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдкреНрд░рд╛рдкрдХрд╣рд░реВ рднрдПрдХрд╛ рдзреЗрд░реИ рд▓рд╛рдорд╣рд░реВ рд╣реБрдБрджрд╛ рд░ рддрдкрд╛рдИрдВрд▓реЗ рддреА рдмреАрдЪрдХреЛ рднрд╛рд░рд▓рд╛рдИ рд╕рдиреНрддреБрд▓рдирдорд╛ рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдБрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд▓рд╛рдорд╕рдБрдЧ рд╕рдиреНрджреЗрд╢рдХреЛ рдЬрдбрд╛рди рд╡рдЬрдирджреНрд╡рд╛рд░рд╛ рд╣реБрдиреНрдЫ (рд╕рд╢рд░реНрдд рд╕реНрдЯреНрд░рд┐рдЩ рдорд╛рди рдмрд╛рдЯ 0 - n
).
рд▓рд╛рдорд╣рд░реВрдХреЛ рдмрд░рд╛рдмрд░ рд╡рдЬрди - рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреЗрдЫ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд░рдХрдо рд╕рдиреНрджреЗрд╢рд╣рд░реВ (рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢ рдорд╛рддреНрд░ рдПрдХ рд▓рд╛рдордорд╛ рд░рд╛рдЦрд┐рдиреЗрдЫ)ред рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рд╕рдорд╛рди рд╡рд┐рддрд░рдгрдХреЛ рдкреВрд░реНрдг рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЫреИрди.
рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
Hash
рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреА рд╡рд╛ рдЧреБрдгрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЧрдгрдирд╛ headers
рд╕рдиреНрджреЗрд╢рд╣рд░реВред рдпрджрд┐ рд╕рдмреИ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдиреНрджреЗрд╢рд╣рд░реВрдорд╛ рдлрд░рдХ рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреАрд╣рд░реВ рдерд┐рдП рд╡рд╛ headers
, рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рддрд░рдг рд╡рдЬрди рджреНрд╡рд╛рд░рд╛ рд╣реБрдиреЗрдЫред рдЕрдиреНрдпрдерд╛, рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ рд╡рд╛ headers
.
рдПрдЙрдЯреИ рд▓рд╛рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрд╣реБрд╡рд┐рдз рдЙрдкрднреЛрдХреНрддрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдорд╛рдзрд╛рди рднрдиреНрджрд╛ рдорд╛рдерд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдереНрд░реБрдкреБрдЯ рдмрдвреНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдБрджрд╛ рдорджреНрджрдд рдЧрд░реНрдиреБрдкрд░реНрдЫред
рд╕рдВрдпреЛрдЬрди рдПрдХреНрд╕рдЪреЗрдВрдЬрд░реНрд╕ (E2E)
рд╕рдмреИ рд╡рд┐рдирд┐рдордпрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрдЪрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрдпреБрдХреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд┐рдирд┐рдордп-рджреЗрдЦрд┐-рд╡рд┐рдирд┐рдордп (рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди AMQP
ред рдпреЛ рдкрдХреНрд╖рдмрд╛рдЯ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛ RabbitMQ
).
рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
рдХреЛ рдЦрд░реНрдЪ рдорд╛ E2E
рд╣рд╛рдореА рд╡рд░реНрддрдорд╛рди рд░ рдмрдвреНрджреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣реА рд╕реНрдХреЗрд▓реЗрдмрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдЫреМрдВред
рдПрдХреНрд╕рдЪреЗрдиреНрдЬ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реБрдиреНрдЫ RPC
рд╕рд░реНрднрд░рдорд╛ рдЕрдиреБрд░реЛрдзред рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдЫ Exchange.Declare
рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕рдВрдЧ рдмреЛрд▓рд╛рдЗрдПрдХреЛ:
- рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ рдирд╛рдо
- рдПрдХреНрд╕рдЪреЗрдВрдЬрд░ рдкреНрд░рдХрд╛рд░
- рдЕрдиреНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ
рд╕рд┐рд░реНрдЬрдирд╛ рдЙрджрд╛рд╣рд░рдг exchange
рд╕рд╣рдпреЛрдЧрдХреЛ рд╕рд╛рде
//...
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
(рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрдХреНрд╕рдЪреЗрдВрдЬрд░)ред рдпрджрд┐ рд╕рдиреНрджреЗрд╢ рдореВрд▓ рдорд╛рд░реНрдЧрдорд╛ рдпрд╛рддреНрд░рд╛ рдЧрд░реНрди рд╕рдХреНрджреИрди рднрдиреЗ, рдпрд╕рд▓рд╛рдИ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рдорд╛ рдкрдард╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рдЬреБрди рдлрд░рдХ рдорд╛рд░реНрдЧрдорд╛ рд░реВрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рдпрджрд┐ рд╕реГрд╖реНрдЯрд┐ exchange
рд╕рдореНрднрд╡рддрдГ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рд░реНрднрд░рд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрдард╛рдЙрдиреЗрдЫ RPC
рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реН Exchange.DeclareOk
ред рдпрджрд┐ рд╕реГрд╖реНрдЯрд┐ рдЕрд╕рдВрднрд╡ рдЫ (рдЕрдиреБрд░реЛрдз рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдпреЛ Exchange.Declare
), рддрдм рдЪреНрдпрд╛рдирд▓ рдмрдиреНрдж рд╣реБрдиреЗрдЫ рдПрдХ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд░реНрднрд░ Channel.Close
рд░ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреЗрдЫ
рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреЛрд╕реНрдЯ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреЗрд╣рд┐ рдЕрд╕реНрддрд┐рддреНрд╡рд╣реАрди рдПрдХреНрд╕рдЪреЗрдиреНрдЬрд░рд▓рд╛рдИ рд╕рдиреНрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ - RabbitMQ
рдЪреБрдкрдЪрд╛рдк рд╣рдЯрд╛рдЙрдиреЗрдЫред
GUI рдорд╛рд░реНрдлрдд рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ
рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН RabbitMQ
рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрддрд░реНрдЧрдд guest
(рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: guest
рд░ рдкрд╛рд╕рд╡рд░реНрдб: guest
)ред рдХреГрдкрдпрд╛ рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ guest
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯрдмрд╛рдЯ рдорд╛рддреНрд░ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЕрдм рдЯреНрдпрд╛рдмрдорд╛ рдЬрд╛рдФрдВ Exchanges
рд░ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН Add a new exchange
ред рдЧреБрдгрд╣рд░реВ рднрд░реНрдиреБрд╣реЛрд╕реН:
рдзреЗрд░реИ рдЬрд╕реЛ рдЧреБрдгрд╣рд░реВ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╣рд╛рдБ рд╣рд╛рдореА рдиреЛрдЯ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпрджрд┐ рд╣рд╛рдореА рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ Internal
, рддрдм рд╡рд┐рдирд┐рдордп рдХреЛ рд▓рд╛рдЧреА рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ E2E
. Producer
рдпрд╕реНрддреЛ рд╡рд┐рдирд┐рдордпрдорд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрд╛, рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡рд░реНрдгрди рдЧрд░реНрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ
рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рдЧреНрд░рд╛рдлрдорд╛ рддреНрдпрд╣рд╛рдБ рдЫ рд╕реАрдорд┐рдд рд╕реЗрдЯ рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреАрд╣рд░реВ, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдзреЗрд░реИ рддрд┐рд░ рд╣реЗрд░реНрди рд▓рд╛рдпрдХ рдЫ fanout exchange
, рдЬреБрди 1:1 рд░рд╛рдЙрдЯрд┐рдЩ рдХреБрдЮреНрдЬреАрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫред рддреНрдпреЛ рд╣рд╛рдореА рд╕рдореНрдЭрдиреНрдЫреМрдВ fanout exchange
рд╕рдмреИрднрдиреНрджрд╛ рдЫрд┐рдЯреЛред
рдпрджрд┐ рд░реБрдЯ рд╕рдВрдЦреНрдпрд╛ рдЕрдирдиреНрддрддрд╛рддрд┐рд░ рд▓рд╛рдЧреНрдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ topic exchange
рд╡рд╛, рдпрджрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЪрдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ direct exchnge
, рдХрд┐рдирднрдиреЗ рдК рдЫрд┐рдЯреЛ рдЫ topic exchange
.
рд╡рд┐рднрд┐рдиреНрди рдХреЛ рд╕рдВрдпреЛрдЬрди exchange
рд╕рд╣реА рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреБрдкрд░реНрдЫ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рдЬрд╕рд▓реЗ рд╡рд░реНрддрдорд╛рди рд░ рдмрдвреНрджреЛ рдкреНрд░рдгрд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрджрдЫред
рд╕рдВрдЦреНрдпрд╛ exchange
рд░ рд▓рд╛рдЗрдирд╣рд░реВ рдорд╛рд░реНрдЧрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рддреБрд▓рдирд╛рдорд╛ рдиреНрдпреВрдирддрдо рд╣реБрдиреБрдкрд░реНрдЫред
рдЕрд░реНрдХреЛ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд▓рд╛рдо рд░ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдмреБрдЭреНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВред
рд╕рдиреНрджрд░реНрдн
рд╕реНрд░реЛрдд: www.habr.com