MassTransit 如何消耗 CPU [已关闭]

How does MassTransit consumes CPU [closed]

提问人:AsyaK 提问时间:10/30/2023 最后编辑:ESGAsyaK 更新时间:10/30/2023 访问量:48

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

25天前关闭。

我正在使用 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 使用 情况 MassTransit

评论

0赞 fredrik 10/30/2023
似乎有点极端,发送那么多消息需要那么长时间,然后再说一次 - 我们不知道您使用的是什么后端或消息有多大。因此,对于您的用例来说,这可能是正常的。

答:

1赞 Chris Patterson 10/30/2023 #1
  1. 不要等待每个调用都循环发布,您基本上是在为代理确认消息创建大量等待。这是很多死时间,除了等待经纪人之外什么都不做。

  2. 不知道你的功能背后是什么,但我知道它不可能是好的。事实上,我真的知道这不可能是好的。事实上,这可能很可怕。我建议使用此示例作为如何在 Azure 函数中使用 MassTransit 发布消息的指南。Build

祝你好运!

评论

0赞 AsyaK 10/31/2023
非常感谢您的回复。我将测试这些并分享结果。