【发布时间】:2021-06-03 12:06:13
【问题描述】:
这本身可能不是 MassTransit 问题,但我正在尝试调试正在发生的事情。
我们将 MassTransit (7.1.8) 与 Azure 服务总线一起使用。我们的大多数消息都能及时发布,但有时消息需要很长时间才能发布。我不明白为什么。
我们的 4 个(高级)ASB 实例负载不足,但 CPU/内存不高于 ~70%,我想这不应该令人担忧。
这是我们日志中的一个 sn-p:
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 秒????
【问题讨论】:
-
您是否在发布消息之前启动总线?您是在同一个数据中心,还是从澳大利亚(或月球)向美国西部发布?我知道关于 P4 命名空间的一个事实,当我在同一个数据中心时,我可以 publish 6,000 messages/second,但离它更远时速度会慢得多:
-
@ChrisPatterson 发布消息的 ASB 和 AppService 都在同一个区域(北欧)
-
@ChrisPatterson 这是一个 ASP.NET Core 3.1 项目,我们在
ConfigureServices中调用services.AddMassTransitHostedService(true); -
然后我会删除命名空间并重新创建它,因为你显然有一个坏主机。
-
原来是 Azure 服务总线,我知道。 SDK 不会向调用应用程序显示这些重试,这就是它没有被记录的原因。
标签: azureservicebus masstransit .net-core-3.1 azure-servicebus-queues