首页 > 解决方案 > 配置更多时,MassTransit 仅批处理 10

问题描述

我正在尝试配置 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;

在此处输入图像描述

标签: masstransit

解决方案


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

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;

由于您使用的是接收端点连接器,因此您还可以在使用者定义中配置批处理选项,如文档中所示


推荐阅读