MassTransit 8.25.0, .net8
У меня есть служба Windows с планировщиком и потребителем заданий. Не могу понять, как поставить задание в очередь, IPublishEndpoint из примера — это служба с ограниченной областью действия, поэтому я не могу ее внедрить.
Мои попытки
MassTransit.EventExecutionException: The StartJobAttempt (Event) execution faulted
---> MassTransit.EventExecutionException: The StartJobAttempt (Event) execution faulted
---> MassTransit.PayloadNotFoundException: The payload was not found: MassTransit.MessageSchedulerContext
Пыталась создать IPublishEndpoint из IBus с помощью GetPublishSendEndpoint, получила ISendEndpoint
cfg.ConfigureEndpoints(context);
});
});
[/code]
Если я изменю своего потребителя с IJobConsumer на IConsumer, я смогу поставить его в очередь с помощью IBus.Publish
MassTransit 8.25.0, .net8 У меня есть служба Windows с планировщиком и потребителем заданий. Не могу понять, как поставить задание в очередь, IPublishEndpoint из примера — это служба с ограниченной областью действия, поэтому я не могу ее внедрить. Мои попытки [list] [*][code]clientFactory.CreateRequestClient[/code] [/list] [code]public class ImportScheduler( IScheduleConfig config, ILogger logger, IClientFactory clientFactory) : CronJobService(config.CronExpression, config.TimeZoneInfo, logger) { protected override async Task DoWork(CancellationToken cancellationToken) { var requestClient = clientFactory.CreateRequestClient();
var jobId = NewId.Next(); await requestClient.GetResponse(new ImportRequested( jobId.ToGuid(), Guid.Parse("7718D173-1F3F-4F8C-B282-5B5A1C183BCE")), cancellationToken); } } [/code] Производит [code]MassTransit.EventExecutionException: The StartJobAttempt (Event) execution faulted ---> MassTransit.EventExecutionException: The StartJobAttempt (Event) execution faulted ---> MassTransit.PayloadNotFoundException: The payload was not found: MassTransit.MessageSchedulerContext [/code] [list] [*]Пыталась создать IPublishEndpoint из IBus с помощью GetPublishSendEndpoint, получила ISendEndpoint [/list] [code]public class ImportScheduler( IScheduleConfig config, ILogger logger, IBus bus) : CronJobService(config.CronExpression, config.TimeZoneInfo, logger) { protected override async Task DoWork(CancellationToken cancellationToken) { var publishEndpoint = await bus.GetPublishSendEndpoint();
var jobId = NewId.Next(); await publishEndpoint.Send(new { JobId = jobId, Job = new ImportRequested( jobId.ToGuid(), Guid.Parse("7718D173-1F3F-4F8C-B282-5B5A1C183BCE")) }, cancellationToken); } } [/code] [list] Используемый bus.publish напрямую, но получил ошибку, аналогичную первой. { // some consumers
cfg.ConfigureEndpoints(context); }); }); [/code] Если я изменю своего потребителя с IJobConsumer на IConsumer, я смогу поставить его в очередь с помощью IBus.Publish