Masstransit рдореЗрдВ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдХреЗ рд╕рд╛рде рдмрд╣рд╛

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

Masstransit рдореЗрдВ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

Startup.cs

cfg.UseInMemoryScheduler(sheduleConfig.QuartzQueue); 

рд╕рднреА рдХреЛрдб рджреЗрдЦреЗрдВ

рд╢реЗрдбрдпреВрд▓рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ (рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рд╣реИ), рд╣рдореЗрдВ рджрд┐рдП рдЧрдП рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП ISendEndpoint рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:

 ISendEndpoint _sendEndpoint = await _sendEndpointProvider.GetSendEndpoint(new Uri($"rabbitmq://{configs.Host}/{configs.QuartzQueue}")); 

рдФрд░ рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрддрд╛рд░ рдореЗрдВ рдЖрд╡рдзрд┐рдХ рд╕рдВрджреЗрд╢ рд╢реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ:

 _sheduler.ScheduledRecurringMessage = await _sendEndpoint.ScheduleRecurringSend<IRepeatingCommand>( new Uri($"rabbitmq://{configs.Host}/{configs.DestinationQueue}"), new PollExternalSystemSchedule(), new { Message = $"1 sec Quartz {User.Identity.Name}" }); 

PollExternalSystemSchedule рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕

  public class PollExternalSystemSchedule : DefaultRecurringSchedule { public PollExternalSystemSchedule() { StartTime = DateTime.UtcNow; CronExpression = "* * * * * ? *";//1 sec } } 

рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдпрд╣рд╛рдВ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЙрд╕ рдмрд╕ рд╕реЗ рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВрдЧреЗ (рдЬреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ):

 cfg.ReceiveEndpoint(host, sheduleConfig.DestinationQueue, e => { e.ConfigureConsumer<ShedulerCommandConsumer>(provider); }); 

рдЙрдкрднреЛрдХреНрддрд╛ рдкрддреЗ (рдКрдкрд░ рдХрддрд╛рд░ рдкрддрд╛) рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИ:

  public class ShedulerCommandConsumer : IConsumer<IRepeatingCommand> { private ILogger<ShedulerCommandConsumer> _logger; public ShedulerCommandConsumer(ILogger<ShedulerCommandConsumer> loger) { _logger = loger; } public Task Consume(ConsumeContext<IRepeatingCommand> context) { _logger.LogInformation($"Call consumer: {typeof(ShedulerCommandConsumer)} {context.Message.Message} {DateTime.UtcNow} "); return Task.CompletedTask; } } 

рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рдХрд░реЗрдВ:

 await _sendEndpoint.CancelScheduledRecurringSend(_sheduler.ScheduledRecurringMessage); 

рд╕реНрд░реЛрдд рдХреЛрдб

рдореИрдВ рдЖрдкрдХреЛ рд╕рд╛рдЧрд╛ рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рдВрджреЗрд╢ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред

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


All Articles