MassTransitред рдиреЗрдЯ рдХреЗ рд▓рд┐рдП RabbitMQ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ (MSMQ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдмрд╕

MassTransit
рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдкреВрд░реНрд╡ рд╕рд╣рдХрд░реНрдореА рд╕реЗ рдорд╛рд╕рдЯреНрд░рд╛рдВрд╕рд┐рдЯ (рдПрдордЯреА) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рдерд╛ рдЬреЛ рдЕрдиреБрднрд╡реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдЖрдП рдереЗред рдЬрд┐рд╕ рдХрдВрдкрдиреА рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд░реЛрдЬрд╝рдЧрд╛рд░ рдорд┐рд▓рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рд╕реЗрд╡рд╛ рдХреЗ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордЯреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЬрдм рд╕реЗ рдЙрдЪреНрдЪ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЧрдИ, рджреВрд╕рд░реЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рдПрдХ рдШрдЯрдирд╛-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдордЯреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рдерд╛ред



рдорд╛рд╕рдЯреНрд░рд╛рдВрд╕рд┐рдЯ рдХреНрдпрд╛ рд╣реИред


MassTransit рдЬрд╛рдиреЗ-рдорд╛рдиреЗ DataBus рдкреИрдЯрд░реНрди рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбреНрд░реВ рд╕реЗрд▓рд░реНрд╕ рдФрд░ рдХреНрд░рд┐рд╕ рдкреИрдЯрд░рд╕рди рдиреЗ NServiceBus рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рдПрдирд╛рд▓реЙрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЬреЛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ RabbitMQ рдпрд╛ MSMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдордиреЗ RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдЕрдиреБрднрд╡ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдорд╛рд╕рдЯреНрд░рд╛рдВрд╕рд┐рдЯ рдПрдПрдордХреНрдпреВрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рдд рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЫрд┐рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддрд╛рдХрд┐ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдПрдордХреНрдпреВрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЬреНрдЮрд╛рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдмрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд░реЗрдХ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ред RabbitMQ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдпрд╣ рдмреБрд░реА рдЦрдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ - рдиреНрдпреВрдирддрдо рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдкрд╛рдареЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдкрд╛рда рдЫреЛрдЯреЗ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, RabbitMQ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдиреЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рд▓рд╛рдн рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдкрд╣рд▓реЗ рдХреБрдЫ рдкрд╛рдареЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рднреА рд╣рдмреНрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд╛рда рдПрдХ рдФрд░ рдкрд╛рда рджреЛ ред

рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


рдЖрдЗрдП рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рдорд╛рд╕рдЯреНрд░реИрд╕рд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рд░реИрдмрд┐рдЯрдПрдордХреНрдпреВ рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рдХрд╛рд╢рдХ, рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдкрд░, рд╕рдВрджреЗрд╢ "KeyWasPressed" рдФрд░ рдмрд╕ рдХреЗ рд▓рд┐рдП рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХрд╛ рдХреЛрдб рднреЗрдЬ рджреЗрдЧрд╛ред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдмрд╕ рд╕реЗ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
1) рдПрд░реНрд▓рд╛рдВрдЧ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
2) RabbitMQ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
3) рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ MassTransit.RabbitMQ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ PM> Install-Package MassTransit.RabbitMQ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗред

рд╣рдо рд╕реАрдзреЗ рдХреЛрдб рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдмрд╕ рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢ рд╕рд╛рдзрд╛рд░рдг рдбреАрдЯреАрдУ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХрд╛рд╢рдХ рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ KeyWasPressed рдХрд╣рддреЗ рд╣реИрдВред
public class KeyWasPressed { //       public ConsoleKey PressedKey { get; set; } } 


рдЕрдм рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд╢рдХ (рдкреНрд░рдХрд╛рд╢рдХ) рдФрд░ рдЧреНрд░рд╛рд╣рдХ (рдЧреНрд░рд╛рд╣рдХ) рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рд╕рд░реНрд╡рд┐рд╕рдмрд╕ рд╣реИред MassBransit рдореЗрдВ ServiceBus рдПрдХ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП RabbitMQ (рдпрд╛ MSMQ) рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдФрд░ рдкрдмреНрд▓рд┐рд╢рд░ рдЗрд╕рдХреЗ рдмрд╣реБрдд рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдВрдЧреЗ - ServiceBusред

рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ред

  IServiceBus subscriber = ServiceBusFactory.New(sbc => { //        rabbitMq sbc.UseRabbitMq(); //            sbc.ReceiveFrom("rabbitmq://localhost/subscriber"); //   KeyWasPressed.   //      sbc.Subscribe(subs => subs.Handler<KeyWasPressed>(msg => Console.WriteLine("{0}{1}{2}{3}",Environment.NewLine,"Key '", msg.PressedKey, "' was pressed") )); }); 


рдкреНрд░рдХрд╛рд╢рдХред

 IServiceBus publisher = ServiceBusFactory.New(sbc => { //,        rabbitMq sbc.UseRabbitMq(); // ,       sbc.ReceiveFrom("rabbitmq://localhost/publisher"); }); 


MassTransit рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗ ServiceBus рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрдЯреЗрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ рджреЛрдиреЛрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрднреА-рдХрднреА, рдкреНрд░рдХрд╛рд╢рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред
рдЕрдм рд╣рдо рдПрдХ рдЕрдирдВрдд рд▓реВрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рджрдмрд╛рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЛ рдмрд╕ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
 while (true) { publisher.Publish(new KeyWasPressed() { PressedKey = Console.ReadKey().Key }); } 

рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЪрд╛рдмрд┐рдпрд╛рдБ рджрдмрд╛рдПрдВред


рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЬрдм рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, RabbitMQ рдЗрдВрд╕реНрдЯреЙрд▓рд░ RabbitMQ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рдореЗрд╢рд╛ рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реЗрдм рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рдорд╛рдирдХ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
1) рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░, рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ sbin рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,% PROGRAMFILES% \ RabbitMQ Server \ rabbitmq_server_2.7.1 \ sbin \)

2) рдЕрдЧрд▓рд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
rabbitmq-plugins.bat rabbitmq_management рд╕рдХреНрд╖рдо рдХрд░реЗрдВ

3) рдЕрдВрдд рдореЗрдВ, рдкреНрд░рдмрдВрдзрди рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ RabbitMQ рд╕реЗрд╡рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдХреЛ рдЪрд▓рд╛рдПрдВ:
rabbitmq-service.bat stop
rabbitmq-service.bat рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
rabbitmq-service.bat start
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ RabbitMQ рд╕рд░реНрд╡рд░ рдкреНрд░рдмрдВрдзрди рдкреНрд▓рдЧ-рдЗрди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ (рд╕рдВрд╕реНрдХрд░рдг 3.0 рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 55672 рд╣реИ)ред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛, рддреЛ рдирд┐рдореНрди рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рдЕрддрд┐рдерд┐ / рдЕрддрд┐рдерд┐ рд╣реИред рд╣рдо рдЕрдВрджрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реВрдЪреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдореМрдЬреВрдж рд╣реИ, MT рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ (рдПрдХреНрд╕рдЪреЗрдВрдЬ) рдмрдирд╛рддрд╛ рд╣реИ: ClassName рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХрддрд╛рд░реЗрдВ рдмрд╛рдВрдзрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ рд╣реИ, рдЬрд┐рд╕реЗ MT рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: KeyWasPressed, рдФрд░ рдпрд╣ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ рдПрдХ рдХрддрд╛рд░ - рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИред

рдПрдордЯреА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрддрд╛рд░ рдФрд░ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ рдЯрд┐рдХрд╛рдК (рдЯрд┐рдХрд╛рдК) рд╣реЛ рдЧрдП, рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕ рдмрдЧ рдпрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛ред рд╕реНрдерд┐рд░ рд╡рд┐рдирд┐рдордп рдмрд┐рдВрджреБ рдФрд░ рдХрддрд╛рд░ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдкреНрд░рдХрд╛рд╢рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдЧреНрд░рд╛рд╣рдХ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрджреЗрд╢ рдЕрднреА рднреА рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрддрд╛рд░ рдореЗрдВ рдЦрдбрд╝рд╛ рд░рд╣реЗрдЧрд╛ рдФрд░ рдЪреБрдкрдЪрд╛рдк рдЙрд╕рдХреЗ (рдЧреНрд░рд╛рд╣рдХ) рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдЧрд╛ред

рдирдП рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЬреЛрдбрд╝рдирд╛ред


рдЪрд▓рд┐рдП KeyWasPressed рдореИрд╕реЗрдЬ рдореЗрдВ рдПрдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рдПрдмреНрд╕рдмрд░реНрд╕реНрдХреНрд░рд╛рдЗрдмрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

 IServiceBus anotherSubscriber = ServiceBusFactory.New(sbc => { sbc.UseRabbitMq(); sbc.ReceiveFrom("rabbitmq://localhost/anothersubscriber"); sbc.Subscribe(subs => subs.Handler<KeyWasPressed>(msg => Console.WriteLine("{0}{1}{2}{3}", Environment.NewLine, "Key with code ", (int) msg.PressedKey, " was pressed") )); }); 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдВред

рдЕрдм, рдЬрдм рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ - рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдФрд░ рдкреНрд░рддреАрдХ рдХреЛрдб рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдЖрдк рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ рдФрд░ рдПрдордЯреА рд╕реЗ рдЬреБрдбрд╝реА рдПрдореНрдмрд░рд╕реНрдХреНрд░рд╛рдЗрдмрд░ рдХрддрд╛рд░реЗрдВ рд╣реИрдВ: рдХреАрд╡рд╕рдкреНрд░реЗрд╕реНрдб рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреЙрдЗрдВрдЯред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ MT.KeyWasPressed рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, RabbitMQ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХрддрд╛рд░реЛрдВ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред

рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рддрд░рдгред


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ, MassTransit + RabbitMQ рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╕рд░реНрд╡рд░ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдирдВрдмрд░ рдПрдХ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд▓реЛрдб рддреАрди рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реАрдбрд┐рдпреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдирдВрдмрд░ рджреЛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдВрдЪ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╣рдо, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВрдЧреЗред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ filesToConvert рдирд╛рдордХ рдПрдХ рдХрддрд╛рд░ рд╣реИ, рдЬреЛ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ VideoFile рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧреАред

 public class VideoFile { public int Num { get; set; } //,       public int TimeToConvert { get; set; } } 

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ, рдЦреЗрд▓ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЗ рдЯрд╛рдЗрдордЯреЙрдиреНрдХрд╡рд░реНрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдХрд┐рдВрд╡рджрдВрддреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЛрдб, рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
 int firstServerFilesCount = 0; IServiceBus firstServer = ServiceBusFactory.New(sbc => { sbc.UseRabbitMq(); //   ,      sbc.SetConcurrentConsumerLimit(3); sbc.Subscribe(subs => subs.Handler<VideoFile>(msg => { firstServerFilesCount++; Thread.Sleep(msg.TimeToConvert); Console.WriteLine(" 1. {0} {1}   {2} . : {3}  3. ThreadId - {4}", Environment.NewLine, msg.Num, msg.TimeToConvert, firstServerFilesCount, Thread.CurrentThread.ManagedThreadId); firstServerFilesCount--; })); //prefetch=3.   ,         sbc.ReceiveFrom("rabbitmq://localhost/filesToConvert?prefetch=3"); }); 

рдХрд┐рдВрд╡рджрдВрддреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рддреАрди рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рддрд░реНрдХ 3 рдХреЗ рд╕рд╛рде SetConcurrentConsumerLimit рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣рд▓реА рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ MassTransit рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдПрдХ рдкреВрд▓ рддреИрдпрд╛рд░ рд░рдЦреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ RabbitMQ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рд╡рд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ FirstServer рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдмрд╛рд░ рдореЗрдВ рддреАрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЙрд░реА рдореЗрдВ рдкреНрд░реАрдлреИрдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЙрд╕реЗ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдлрд░реНрд╕реНрдЯрд╕реЗрд╡рд░ рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред

рдХрд┐рдВрд╡рджрдВрддреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЛрдб рдПрдХ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
 int secondServerFilesCount = 0; IServiceBus secondServer = ServiceBusFactory.New(sbc => { sbc.UseRabbitMq(); //   ,      sbc.SetConcurrentConsumerLimit(5); sbc.Subscribe(subs => subs.Handler<VideoFile>(msg => { secondServerFilesCount++; Thread.Sleep(msg.TimeToConvert); Console.WriteLine(" 2. {0} {1}   {2} . : {3}  5. ThreadId - {4}", Environment.NewLine, msg.Num, msg.TimeToConvert, secondServerFilesCount, Thread.CurrentThread.ManagedThreadId); secondServerFilesCount--; })); //prefetch=3.   ,         sbc.ReceiveFrom("rabbitmq://localhost/filesToConvert?prefetch=5"); }); 

рдорддрднреЗрдж, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдкреВрд▓ рдореЗрдВ рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реИрдВ, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрд░реА рдореЗрдВ рдкреНрд░реАрдлреИрдЪ рдХрд╛ рдореВрд▓реНрдпред рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реЗрдХреЗрдВрдб рд╕реЗрд╡рд░ рдХреЛ рдЙрд╕реА рдХрддрд╛рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдлрд░реНрд╕реНрдЯрд╕реЗрд╡рд░ рдЬреБрдбрд╝рд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рдХрддрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдкреИрджрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдпрджрд┐ рдлрд░реНрд╕реНрдЯ рд╕реЗрд╡рд░ рдФрд░ рд╕реЗрдХрдВрдб рд╕реЗрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрддрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдмрд╛рд░, рджреЛ рдмрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рд╣рдо рдПрдХ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рд╕реМ "рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ" рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг рд╕рдордп рдХреЗ рд╕рд╛рде filesTonConvert рдХрддрд╛рд░ рдХреЛ рднрд░рддрд╛ рд╣реИред
 Random rnd = new Random(); for (int i = 1; i <= 100; i++) { publisher.Publish(new VideoFile() {Num = i, TimeToConvert = rnd.Next(100, 5000)}); } 

рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рд░реНрд╡рд░ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рд╕реМрдВрдкрд╛ рд╣реИред


рдорд╛рд╕рдЯреНрд░рд╛рдВрд╕рд┐рдЯ рд╣рдореЗрдВ рдХреМрди рд╕реА рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рд▓реЗрдЦ рдХреЗ рднреАрддрд░, рдорд╛рд╕рдЯреНрд░рд╛рдВрд╕рд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдореИрдВ рдХрд░реВрдВрдЧрд╛)ред













рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In210428/


All Articles