我在 .NET REST API 中使用 MassTransit 8.0.15 和 RabbitMQ。在启动过程中,我配置了路由表中使用的多个使用者和活动。有时,队列(用于活动已完成的消息)没有绑定到它的消费者。当我重新启动应用程序时,它会正确绑定。这似乎是一个超时问题或类似的问题。问题是我的应用程序启动了,但某些部分可能没有正确配置,导致我错过消息或阻止我的路由滑动完成。
我不确定为什么会发生这种情况,但我还有另一个问题。 MassTransit 中有没有办法验证启动是否成功,确保一切都按预期配置?或者我应该通过向每个队列发送消息来检查它们是否响应来“手动”测试它?
另一个问题与 UseMessageRetry 方法有关。我可以在全球范围内应用它以确保每条消息都有重试策略吗?我特别想问它是否也可以涵盖配置队列、交换、活动等的所有启动 TCP 连接
您可以配置主机选项,以便 .NET 通用主机等待,直到总线成功启动,然后再继续 ASP.NET 启动。默认情况下,这是
false
。
services.AddOptions<MassTransitHostOptions>()
.Configure(options =>
{
options.WaitUntilStarted = true;
options.StartTimeout = TimeSpan.FromSeconds(30);
});