微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 MassTransit 在 Azure 服务总线上发布消息间歇性缓慢

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

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

我们的 4 个(高级)ASB 实例负载不足,但 cpu/内存未超过 ~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 秒的时间。

不确定在哪里看?任何帮助将不胜感激。

编辑

我注意到的一件有趣的事情是,无论有多少消息要发布 ?

enter image description here

解决方法

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

请求已终止,因为命名空间受到限制。错误代码:50002。请等待 10 秒,然后重试

失败和随后的重试完全在 Azure SDK 组件中处理,对 MassTransit 不可见。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。