Ошибка выполнения StartJobAttempt (Event)C#

Место общения программистов C#
Ответить
Anonymous
 Ошибка выполнения StartJobAttempt (Event)

Сообщение Anonymous »

MassTransit 8.25.0, .net8
У меня есть служба Windows с планировщиком и потребителем заданий. Не могу понять, как поставить задание в очередь, IPublishEndpoint из примера — это служба с ограниченной областью действия, поэтому я не могу ее внедрить.
Мои попытки

Код: Выделить всё

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);
}
}
Производит

Код: Выделить всё

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

Код: Выделить всё

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);
}
}
  • Используемый bus.publish напрямую, но получил ошибку, аналогичную первой.
    {
    // some consumers

    x.AddConsumer(cc =>
    {
    cc.Options(xx =>
    xx.SetRetry(r => r.None()).SetJobTimeout(TimeSpan.FromHours(3)).SetConcurrentJobLimit(1));
    });

    x.SetJobConsumerOptions();
    x.AddJobSagaStateMachines();
    x.SetInMemorySagaRepositoryProvider();

    x.SetKebabCaseEndpointNameFormatter();

    x.UsingAzureServiceBus((context, cfg) =>
    {
    cfg.Host(configuration.GetValue("AzureServiceBus"));

    cfg.ConfigureEndpoints(context);
    });
    });
    [/code]
    Если я изменю своего потребителя с IJobConsumer на IConsumer, я смогу поставить его в очередь с помощью IBus.Publish

    Подробнее здесь: https://stackoverflow.com/questions/790 ... on-faulted
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»