MassTransit пропускает сообщения, отправленные служебной шиной Azure и опубликованные с помощью Azure Devops Service Hook
Я пытаюсь использовать сообщение в .NET WebAPI с помощью MassTrasnit, которое отправляется на ресурс служебной шины Azure с помощью Azure Devops Service Hook, который срабатывает, когда пользователь создает рабочий элемент. Похоже, я все настроил правильно, и все имена конечных точек и тем совпадают друг с другом, но когда я пытаюсь отключить сервисный крючок, API обнаруживает, что ему было отправлено сообщение, но MT пропускает его и помещает оно в очереди недоставленных писем. Я не уверен, нужно ли мне детализировать модель для моего сообщения, поэтому оно пропускает или что-то в этом роде, но я подумал, может быть, кто-нибудь сможет мне помочь.
Это моя конфигурация MassTransit в Program.cs.
builder.Services.AddMassTransit(x =>
{
x.AddConsumer<WorkItemCreatedConsumer>();
x.UsingAzureServiceBus((context, cfg) =>
{
cfg.Host("[Connection String]");
cfg.ConfigureEndpoints(context);
});
});
Это мой потребитель сообщений
public class WorkItemCreatedConsumer : IConsumer<WorkItemCreated>
{
private readonly ILogger<WorkItemCreatedConsumer> _logger;
public WorkItemCreatedConsumer(ILogger<WorkItemCreatedConsumer> logger)
{
_logger = logger;
}
public Task Consume(ConsumeContext<WorkItemCreated> context)
{
_logger.LogInformation("Work Item Created {Message}", context.Message);
return Task.CompletedTask;
}
}
И это моя модель сообщения
public class WorkItemCreated
{
public string Id { get; set; } = default!;
}
Но когда я запускаю свой API, и все запускается правильно, а затем я иду и устанавливаю правильное имя темы, созданное в служебной шине Azure, в моем сервисном хуке Azure, и запускаю на нем тест, он пропускает это сообщение
[12:43:34 DBG] SKIP sb://test-sample.servicebus.windows.net/WorkItemCreated 646a01b9-24ca-43e1-b3c1-e1d3f459573b
[12:43:36 DBG] Queue: WorkItemCreated_skipped (dead letter)
[12:43:37 INF] MOVE sb://test-sample.servicebus.windows.net/WorkItemCreated 646a01b9-24ca-43e1-b3c1-e1d3f459573b WorkItemCreated_skipped dead-letter
РЕДАКТИРОВАТЬ:
На вопрос ответил Крис Паттерсон в комментариях: мне нужно было использовать RawJsonDeserializer для издателей, не поддерживающих MT.