.net MassTransit重试策略引发System.NullReferenceException:

.net MassTransit重试策略引发System.NullReferenceException:,.net,masstransit,.net,Masstransit,由于某些原因,我不能在我的消费者上使用重试。我遵循文档中的示例,我只是向我的消费者添加了一个简单的r.间隔,但它在构建时失败了…不确定为什么 services.AddMassTransit(x => { x.AddConsumer<SyncConsumer>(); x.AddConsumer<SyncForcadoConsumer>(); }); services.Ad

由于某些原因,我不能在我的消费者上使用重试。我遵循文档中的示例,我只是向我的消费者添加了一个简单的r.间隔,但它在构建时失败了…不确定为什么

 services.AddMassTransit(x =>
        {
            x.AddConsumer<SyncConsumer>();
            x.AddConsumer<SyncForcadoConsumer>();
        });
        services.AddSingleton(provider => Bus.Factory.CreateUsingAzureServiceBus(cfg =>
        {
            var host = cfg.Host(
                "Endpoint=sb://" + busName + ".servicebus.windows.net/;" +
                "SharedAccessKeyName=" + keyName + ";" +
                "SharedAccessKey=" + secret,
                z =>
                {
                    TokenProvider
                        .CreateSharedAccessSignatureTokenProvider(keyName, secret);
                });
            cfg.UseExtensionsLogging(provider.GetService<ILoggerFactory>());
            cfg.ReceiveEndpoint(host, "sync-crm-relacionamento",
                e => { e.Consumer<SyncConsumer>(provider); });
            cfg.ReceiveEndpoint(host, "sync-forcado-crm-relacionamento",
                e =>
                {                        
                    e.Consumer<SyncForcadoConsumer>(provider);

                    e.UseMessageRetry(r =>
                    {
                        r.Handle<ArgumentNullException>();

                    });
                });
        }));

有什么想法吗?

您需要实际指定重试策略。有效政策包括:

e.UseMessageRetry(r =>
{
    r.Interval(5, 100);

    r.Intervals(100, 500, 1000);

    r.Immediate(2);
});
选择一个,也有一些其他的,包括指数,没有

它正在引发配置异常,因为您没有实际配置重试


重试使用在。

中介绍。错误已停止,但重试从未起作用=/。我刚刚删除了一个r.Immediate(2),并在我的使用者上强制了一个期望值,但它只在发送消息时调用onceis重试,或者当使用者收到消息并在消费时出错时调用onceis重试?在接收端点上配置了重试,并处理消费。订单很重要,UseRetry()应该在消费者之上。这是一条管道。
e.UseMessageRetry(r =>
{
    r.Interval(5, 100);

    r.Intervals(100, 500, 1000);

    r.Immediate(2);
});