MassTransit 如何消耗 CPU

问题描述 投票:0回答:1

我正在使用 https://masstransit.io/ 库,发送 2000 条消息平均使用 100% CPU 15 分钟。

首先,我认为这是由于消息请求的作业造成的,但后来我尝试在没有任何作业的情况下发送 2000 条消息,得到了相同的结果。

这正常吗? MassTransit 如何消耗 CPU ?

消息是通过调用以下方法的 Azure 函数发送的:

public async Task DoJob(string contextName, RequestDto request) 
{
using var provider = _publishEndpointProvider.Build();
var publishEndpoint = provider.Get();

foreach (var reference in references)
{
await publishEndpoint.Publish(new ProcessMessage
{
MessageCorrelationId = Guid.NewGuid().ToString(),
MessageCreationTimestamp = DateTimeOffset.UtcNow,
ContextName = contextName,
StartDate = request.StartDate,
EndDate = request.EndDate,
Reference = reference
}).ConfigureAwait(false);
}
}

非常感谢, AK

c# cpu-usage masstransit
1个回答
0
投票
  1. 不要等待每个调用在循环中发布,您基本上是在等待代理确认消息。这是大量的停滞时间,除了等待经纪人之外什么也不做。

  2. 不知道你的

    Build
    功能背后是什么,但我知道它不会很好。其实我真的知道这样不会好。事实上这可能很可怕。我建议使用 sample 作为如何在 Azure Functions 中使用 MassTransit 发布消息的指南。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.