0

我正在使用masstransit Courier 开展一个项目。我正在尝试在 1 小时后重新发送一条消息以重新执行活动。这是我在执行活动方法中的代码:

        await context.Redeliver(TimeSpan.FromMinutes(60));
        var (success, message) = await client.performHttpRequest();
        if(!success && context.GetRedeliveryCount() < 10))
        {
            await context.Redeliver(TimeSpan.FromMinutes(60));
        }

但不是重新交付,而是开始赔偿。我错过了什么?

4

1 回答 1

1

我所知道的对路由单活动进行重新交付的唯一方法是使用UseScheduledRedelivery中间件。您可以抛出由中间件捕获的异常(您可以过滤异常类型,仅重新交付某些类型),MassTransit 将为您处理重新交付。

例如,如果您抛出一个RescheduleException,您将配置预定的重新投递,如下所示:

endpoint.UseScheduledRedelivery(r => 
{
    r.Handle<RescheduleException>();
    r.Intervals(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(30)));
});
于 2021-02-08T12:54:13.493 回答