当配置更多时,MassTransit仅批处理10

当配置更多时,MassTransit仅批处理10,masstransit,Masstransit,我试图配置MassTransit批处理,但在运行时一次只能处理10批 hostHandler = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) => { cfg.TrySetPrefetchCount(2000); cfg.Batch<T>(cfg => { cfg.Consumer(() => consumer);

我试图配置MassTransit批处理,但在运行时一次只能处理10批

hostHandler = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) =>
{
    cfg.TrySetPrefetchCount(2000);
    cfg.Batch<T>(cfg =>
    {
        cfg.Consumer(() => consumer);
        cfg.ConcurrencyLimit = 2;
        cfg.MessageLimit = 1000;
        cfg.TimeLimit = TimeSpan.FromSeconds(1);
    });
    cfg.UseMessageRetry(r => r.Immediate(2)));
});

await hostHandler.Ready;
hostHandler=receiveEndpointConnector.ConnectReceiveEndpoint(queueName,(context,cfg)=>
{
TrySetPrefetchCount(2000);
批处理(cfg=>
{
消费者(()=>消费者);
cfg.ConcurrencyLimit=2;
cfg.MessageLimit=1000;
cfg.TimeLimit=TimeSpan.FromSeconds(1);
});
UseMessageRetry(r=>r.Immediate(2));
});
等待主人,准备好了;

在我发布问题5分钟后,我试图更改批处理配置的顺序,并将消费者作为最后一句话,成功了

hostHandler = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) =>
{
    cfg.TrySetPrefetchCount(2000);
    cfg.Batch<T>(cfg =>
    {
        cfg.ConcurrencyLimit = 2;
        cfg.MessageLimit = 1000;
        cfg.TimeLimit = TimeSpan.FromSeconds(1);
        cfg.Consumer(() => consumer);
    });
    cfg.UseMessageRetry(r => r.Immediate(2)));
});

await hostHandler.Ready;
hostHandler=receiveEndpointConnector.ConnectReceiveEndpoint(queueName,(context,cfg)=>
{
TrySetPrefetchCount(2000);
批处理(cfg=>
{
cfg.ConcurrencyLimit=2;
cfg.MessageLimit=1000;
cfg.TimeLimit=TimeSpan.FromSeconds(1);
消费者(()=>消费者);
});
UseMessageRetry(r=>r.Immediate(2));
});
等待主人,准备好了;

在我发布问题5分钟后,我试图更改批处理配置的顺序,并将消费者作为最后一句话,成功了

hostHandler = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) =>
{
    cfg.TrySetPrefetchCount(2000);
    cfg.Batch<T>(cfg =>
    {
        cfg.ConcurrencyLimit = 2;
        cfg.MessageLimit = 1000;
        cfg.TimeLimit = TimeSpan.FromSeconds(1);
        cfg.Consumer(() => consumer);
    });
    cfg.UseMessageRetry(r => r.Immediate(2)));
});

await hostHandler.Ready;
hostHandler=receiveEndpointConnector.ConnectReceiveEndpoint(queueName,(context,cfg)=>
{
TrySetPrefetchCount(2000);
批处理(cfg=>
{
cfg.ConcurrencyLimit=2;
cfg.MessageLimit=1000;
cfg.TimeLimit=TimeSpan.FromSeconds(1);
消费者(()=>消费者);
});
UseMessageRetry(r=>r.Immediate(2));
});
等待主人,准备好了;

您也可以使用较新的批处理语法,但仍需要在
消费者调用之前指定:

var handle = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) =>
{
    cfg.TrySetPrefetchCount(2000);

    cfg.UseMessageRetry(r => r.Immediate(2)));

    cfg.ConfigureConsumer<YourConsumer>(context, cons =>
    {
        cons.Options<BatchOptions>(options => options
            .SetMessageLimit(1000)
            .SetTimeLimit(1000)
            .SetConcurrencyLimit(2));
    });
});

await handle.Ready;
var handle=receiveEndpointConnector.ConnectReceiveEndpoint(queueName,(context,cfg)=>
{
TrySetPrefetchCount(2000);
UseMessageRetry(r=>r.Immediate(2));
cfg.ConfigureConsumer(上下文,cons=>
{
cons.Options(选项=>Options
.SetMessageLimit(1000)
.SetTimeLimit(1000)
.SetConcurrencyLimit(2));
});
});
等待处理。准备好;

由于使用的是receive endpoint connector,您还可以将使用者定义中的批处理选项配置为。

您也可以使用较新的批处理语法,但仍需要在
使用者调用之前指定:

var handle = receiveEndpointConnector.ConnectReceiveEndpoint(queueName, (context, cfg) =>
{
    cfg.TrySetPrefetchCount(2000);

    cfg.UseMessageRetry(r => r.Immediate(2)));

    cfg.ConfigureConsumer<YourConsumer>(context, cons =>
    {
        cons.Options<BatchOptions>(options => options
            .SetMessageLimit(1000)
            .SetTimeLimit(1000)
            .SetConcurrencyLimit(2));
    });
});

await handle.Ready;
var handle=receiveEndpointConnector.ConnectReceiveEndpoint(queueName,(context,cfg)=>
{
TrySetPrefetchCount(2000);
UseMessageRetry(r=>r.Immediate(2));
cfg.ConfigureConsumer(上下文,cons=>
{
cons.Options(选项=>Options
.SetMessageLimit(1000)
.SetTimeLimit(1000)
.SetConcurrencyLimit(2));
});
});
等待处理。准备好;

由于使用的是receive endpoint connector,您还可以将使用者定义中的批处理选项配置为。

是,订单很重要。例如,
UseMessageRetry
也应该位于
Batch
语句的上方。是的,订单很重要。例如,
UseMessageRetry
也应该位于
Batch
语句的上方。
选项(…)
是扩展方法吗?似乎找不到经过编辑的,我搞错了-为我没有用编译器验证而感到羞耻…选项(…)
是扩展方法吗?似乎找不到已编辑的ITE,我搞错了-为我没有用编译器验证而感到羞耻。。。