masstransit - 配置更多时,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;
解决方案
您也可以使用较新的批处理语法,但仍需要在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;
由于您使用的是接收端点连接器,因此您还可以在使用者定义中配置批处理选项,如文档中所示。
推荐阅读
- python - Python PyQt5线程QObject:无法为不同线程中的父级创建子级
- android - 在 Paging 3 库 Android Kotlin 中更新当前页面或更新数据
- python - 使用 Streamlit 将行添加到数据框
- javascript - 删除方法购物车角度错误
- ios - SwiftyStoreKit 和 AppStore Connect 版主的应用内购买问题
- mongodb - 如何获取 MongoDB Realm App 的服务?
- swift - 会话共享在 os x 的特权类中不起作用
- dialogflow-es - 在意图之间共享参数
- function - 编译器说函数永远不会被调用,但它会被调用
- python - 代码自己执行 3 次而不告诉它这样做