【发布时间】:2020-03-30 09:01:26
【问题描述】:
所以我一直在使用 MassTransit 和 Azure Service Bus Premium,这是我的一个消费者的示例。假设一个发布者的初始负载约为每秒 1000 条消息。但是,每当我尝试配置消费者时,似乎平均每个循环大约有 20-40 条消息。
cfg.ReceiveEndpoint("ReceivePoint", e =>{
e.PrefetchCount = 500;
e.MaxConcurrentCalls = 20;
e.Batch<IBlahContract>(b => {
b.MessageLimit = 500;
b.TimeLimit = TimeSpan.FromSeconds(1);
b.Consumer(() => new BatchBlahConsumer(provider.GetRequiredService<IRepository>(), provider.GetRequiredService<ILogger<BatchBlahConsumer>>()));
});
});
我确实尝试过Throughput test,它每秒管理一千多条消息。有没有人得到任何关于如何实现最佳性能的提示?考虑 RabbitMq 的托管实例是否更有意义,因为这需要扩展?就是感觉 Azure Service Bus 不太适合这么高的吞吐量?
编辑:对此略有补充,怀疑它与将预取保持在 20 左右的要求有关,然后消费者并发才是真正定义性能的因素。所以基本上,就估计需求而言,它需要消费者级别的配置。这会让我更倾向于使用兔子。
【问题讨论】:
标签: azure amqp masstransit servicebus