рдореИрдВ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдкрд╛рдареЛрдВ
рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреА
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг php рдореЗрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдХрдкреНрд░рд┐рдп
рднрд╛рд╖рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рдХрд╛рд╢рд┐рдд / рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдПрдХ рдХрд╛рд░реНрдп рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдпрд╣ рдзрд╛рд░рдгрд╛ рдмрдирд╛рдИ рдЧрдИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдПрдХ рд╣реИрдВрдбрд▓рд░ (рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд▓реЗрдЦ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ - рд╣рдо рдХрдИ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВрдЧреЗред рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ "
рдкреНрд░рдХрд╛рд╢рд┐рдд / рд╕рджрд╕реНрдпрддрд╛ " рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдПрдВрдЧреЗред рдЗрд╕рдореЗрдВ рджреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ - рдкрд╣рд▓рд╛ рд▓реЙрдЧ рдмрдирд╛рдПрдЧрд╛, рджреВрд╕рд░рд╛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╣рд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рд▓реЙрдЧ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рднреА рд╕рдордп рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реЙрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд┐рдирд┐рдордп рдЕрдВрдХ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рдЕрдм рдЙрдиреНрдирдд рдЦрд░рдЧреЛрд╢ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдореЙрдбрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ:
- рдирд┐рд░реНрдорд╛рддрд╛ (рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛) - рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ
- рдХрддрд╛рд░ - рдПрдХ рдмрдлрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднрдВрдбрд╛рд░рдг
- рдЙрдкрднреЛрдХреНрддрд╛ (рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░) - рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЦрд░рдЧреЛрд╢ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХрднреА рднреА рдХрддрд╛рд░ рдореЗрдВ рд╕реАрдзреЗ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рдлреА рдмрд╛рд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рд╕рдВрджреЗрд╢ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрддрд╛рд░ рдореЗрдВ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдкреНрд░рджрд╛рддрд╛ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рдкрд░ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдПрдХ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХреЗ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ:
- рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ;
- рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред
рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрддрд╛рд░ рдореЗрдВ, рдпрд╛ рдХрдИ рдХрддрд╛рд░реЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ, рдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА рди рднреЗрдЬреЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВред рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рд╡рд┐рдирд┐рдордп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХрдИ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: рдкреНрд░рддреНрдпрдХреНрд╖, рд╡рд┐рд╖рдп, рд╣реЗрдбрд░ рдФрд░ рдлреИрдирдЖрдЙрдЯред рд╣рдо рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдзреВрдордзрд╛рдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ - рд▓реЙрдЧ:
$channel->exchange_declare('logs', 'fanout', false, false, false);
рдЯрд╛рдЗрдк рдлреЗрдирдЖрдЙрдЯ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╡рд╣ рдЙрди рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд┐рдПред
рдкрд╣реБрдБрдЪ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ:
рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ rabbitmqctl рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:
$ sudo rabbitmqctl list_exchanges Listing exchanges ... direct amq.direct direct amq.fanout fanout amq.headers headers amq.match headers amq.rabbitmq.log topic amq.rabbitmq.trace topic amq.topic topic logs fanout ...done.
рд╣рдо рдирд╛рдо рдХреЗ рд╕рд╛рде рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦрддреЗ рд╣реИрдВред * рдФрд░ рдПрдХ рдирд╛рдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдмрд┐рдВрджреБ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ)ред
рдкрд╣реБрдБрдЪ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдирд╛рдоред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдо рдХрддрд╛рд░ рдореЗрдВ рдкрддреНрд░ рднреЗрдЬ рд╕рдХрддреЗ рдереЗред рдпрд╣ рд╕рдВрднрд╡ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ, рдЬрд┐рд╕реЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ "" рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреИрд╕реЗ рдкрддреНрд░ рднреЗрдЬреЗ рдереЗ:
$channel->basic_publish($msg, '', 'hello');
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдпрд╛ рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рдВрджреЗрд╢ рдХреЛ рд░реВрдЯрд┐рдВрдЧ_рдХреА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рдХрддрд╛рд░ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "рд░реВрдЯрд┐рдВрдЧ_рдХреА" рдХреБрдВрдЬреА рдореВрд▓рднреВрдд_рдкреНрд░рдХрд╛рд╢ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд╝рд░реА рд╣реИред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдирд╛рдорд┐рдд рдкрд╣реБрдБрдЪ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ:
$channel->exchange_declare('logs', 'fanout', false, false, false); $channel->basic_publish($msg, 'logs');
рд╕рдордп рдХрддрд╛рд░:
рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рдХрддрд╛рд░реЛрдВ рдХреЗ рдирд╛рдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ ("рдирдорд╕реНрддреЗ" рдпрд╛ "рдЯрд╛рд╕реНрдХ_рдХреНрд╡реНрдпреВ")ред рдирд╛рдо рджреЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрддрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрддреНрдкрд╛рджрдХреЛрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдХрддрд╛рд░ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреА рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдПрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рднрд╛рдЧред рд╣рдо рдпрд╣ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрджреЗрд╢ рдкреБрд░рд╛рдирд╛ рд╣реЛ, рдкреБрд░рд╛рдирд╛ рди рд╣реЛред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ 2 рдЪреАрдЬреЗрдВ рдЪрд╛рд╣рд┐рдП:
- рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЦрд░рдЧреЛрд╢ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдирдИ рдХрддрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВ;
- рд╣рд░ рдмрд╛рд░ рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдЦрд░рдЧреЛрд╢ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрддрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред
Php-amqplib рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ, рдЬрдм рд╣рдо рдПрдХ рдирд╛рдо рдХреЗ рдмрд┐рдирд╛ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХрддрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ:
list($queue_name, ,) = $channel->queue_declare("");
рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрддрд╛рд░ рдирд╛рдо рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреАред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - 'amq.gen-JzTY20BRgKO-HjmUJjwwLgред'
рдЬрдм рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрддрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред
рдмрд╛рдЗрдВрдбрд░ (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ)

рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдФрд░ рдПрдХ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдВрджреБ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдФрд░ рдХрддрд╛рд░ рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдмрдВрдз рдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
$channel->queue_bind($queue_name, 'logs');
рдЕрдм рд╕реЗ, рд╣рдорд╛рд░реА рдХрддрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред
рдЖрдк rabbitmqctl list_bindings рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рд╕реВрдЪреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рднреА рдХрддрд╛рд░реЛрдВ рдореЗрдВ рднреЗрдЬрдирд╛:

рдкрджреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдирд╛рдорд┐рдд рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ 'рд▓реЙрдЧ' рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп рдХрддрд╛рд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рдХреЗ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ emit_log.php:
<?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPConnection; use PhpAmqpLib\Message\AMQPMessage; $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->exchange_declare('logs', 'fanout', false, false, false); $data = implode(' ', array_slice($argv, 1)); if(empty($data)) $data = "info: Hello World!"; $msg = new AMQPMessage($data); $channel->basic_publish($msg, 'logs'); echo " [x] Sent ", $data, "\n"; $channel->close(); $connection->close(); ?>
(emit_log.php рд╕реНрд░реЛрдд)рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрджрдо рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЧреИрд░-рдореМрдЬреВрдж рдПрдХреНрд╕реЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рд╣реИред
рдкрд╣реБрдБрдЪ рдмрд┐рдВрджреБ рдкрд░ рд╕рдВрджреЗрд╢ рдЦреЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдХрддрд╛рд░ рдкрд╣реБрдБрдЪ рдмрд┐рдВрджреБ рд╕реЗ рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ: рдЬрдм рддрдХ рд╣рдорд╛рд░реА рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рддрдХ рдПрдХ рднреА рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИ, рддрдм рддрдХ рд╕рднреА рд╕рдВрджреЗрд╢ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Receive_logs.php рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛрдб:
<?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPConnection; $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->exchange_declare('logs', 'fanout', false, false, false); list($queue_name, ,) = $channel->queue_declare("", false, false, true, false); $channel->queue_bind($queue_name, 'logs'); echo ' [*] Waiting for logs. To exit press CTRL+C', "\n"; $callback = function($msg){ echo ' [x] ', $msg->body, "\n"; }; $channel->basic_consume($queue_name, '', false, true, false, false, $callback); while(count($channel->callbacks)) { $channel->wait(); } $channel->close(); $connection->close(); ?>
(Rece_logs.php рд╕реНрд░реЛрдд)рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЙрдЧ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рдиреЗ рдФрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$ php receive_logs.php > logs_from_rabbit.log
рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реЙрдЧ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░реА рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдЯрд╛рдЗрдк рдХрд░реЗрдВ:
$ php receive_logs.php
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн:
$ php emit_log.php
Rabbitmqctl list_bindings рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдиреЗ рдХрддрд╛рд░ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИред рджреЛ рдЦреБрд▓реЗ get_logs.php рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
$ sudo rabbitmqctl list_bindings
Listing bindings ...
logs exchange amq.gen-JzTY20BRgKO-HjmUJj0wLg queue []
logs exchange amq.gen-vso0PVvyiRIL2WoV3i48Yg queue []
...done.
рдпрд╣ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рд▓реЙрдЧ рджреЛ рдХрддрд╛рд░реЛрдВ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдирд╛рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдордиреЗ рдорд╛рдВрдЧрд╛ рдерд╛ред
рдирд┐рдореНрди рдЖрд▓реЗрдЦ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдмрд╕реЗрдЯ рдХреИрд╕реЗ рд╕реБрдиреЗред