#masstransit #routing-slip
#masstransit #прокладывание маршрута-скольжение
Вопрос:
Я работаю над проектом с использованием masstransit Courier. Я пытаюсь повторно отправить сообщение для повторного выполнения действия через 1 час. Это мой код в методе execute activity:
await context.Redeliver(TimeSpan.FromMinutes(60));
var (success, message) = await client.performHttpRequest();
if(!success amp;amp; context.GetRedeliveryCount() < 10))
{
await context.Redeliver(TimeSpan.FromMinutes(60));
}
Но вместо повторной доставки начинается компенсация.
Я что — то пропустил ?
Ответ №1:
Единственный известный мне способ повторной доставки с помощью действий с проскальзыванием маршрутизации — это использование UseScheduledRedelivery
промежуточного программного обеспечения. Вы можете создать исключение, которое перехватывается промежуточным программным обеспечением (вы можете фильтровать типы исключений, чтобы повторно доставлять только определенные типы), и MassTransit обработает повторную доставку за вас.
Например, если вы бросили a RescheduleException
, вы бы настроили запланированную повторную доставку, как показано на рисунке:
endpoint.UseScheduledRedelivery(r =>
{
r.Handle<RescheduleException>();
r.Intervals(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(30)));
});