【问题标题】:MassTransit - Redeliver message in routing slip activityMassTransit - 在传送单活动中重新传递消息
【发布时间】:2021-02-08 20:54:13
【问题描述】:

我正在使用 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));
        }

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

【问题讨论】:

    标签: masstransit routing-slip


    【解决方案1】:

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

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

    endpoint.UseScheduledRedelivery(r => 
    {
        r.Handle<RescheduleException>();
        r.Intervals(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(30)));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多