使用 MassTransit 在 Azure 服务总线上发布消息间歇性地变慢

Publishing messages on Azure Service Bus using MassTransit is intermittently slow

这本身可能不是 MassTransit 问题,但我正在尝试调试正在发生的事情。

我们将 MassTransit (7.1.8) 与 Azure 服务总线结合使用。我们的大多数消息都能及时发布,但有时消息发布需要很长时间。我不明白为什么。

我们的 4 个(高级)ASB 实例处于负载状态,但 CPU/Memory 没有超过 ~70%,我想这不应该令人担忧。

这是我们日志中的一个片段:

03 Jun 2021 13:41:55.642 IBusControl.PublishEvents() with 1 took 00:00:36.1610001
03 Jun 2021 13:41:55.642 SEND sb://<namespace>.servicebus.windows.net/events/...
03 Jun 2021 13:41:19.481 IBusControl.PublishEvents() called with 1 items.

以及对应的代码:

logger.LogDebug("IBusControl.PublishEvents() called with {count} items.", count);
var stopWatch = Stopwatch.StartNew();
var tasks = updatedItems.Select(x => bus.Publish<ISomeEvent>(new SomeEvent(x, x.Parameters)));
await Task.WhenAll(tasks);
stopWatch.Stop();
logger.LogDebug("IBusControl.PublishEvents() with {count} took {elapsed}", count, stopWatch.Elapsed.ToString());

所以我想弄清楚为什么在我们调用 Publish 和 MassTransit 记录 SEND 条目之间需要超过 30 秒。

不确定去哪里找?任何帮助将不胜感激。

编辑

我注意到的一件有趣的事情是,无论要发布多少消息,它所花费的时间通常约为 10 秒

如以上评论所述,Azure 服务总线正在限制命名空间,迫使 Azure SDK 失败并在十秒延迟后自动重试该操作。

The request was terminated because the namespace is being throttled. Error code : 50002. Please wait 10 seconds and try again

失败和后续重试完全在 Azure SDK 组件内处理,MassTransit 不可见。