为什么我在RabbitMQ/MassTransit中有一个_bus_和HealthCheck“ready(not started)”的队列?

dwbf0jvd  于 2023-03-30  发布在  RabbitMQ
关注(0)|答案(1)|浏览(166)

我有.NETCore 6.0,MassTransit 8.0.6和RabbitMQ broker server 3.9.11的API。我的健康检查显示一个“未启动”队列,上面有关键字“bus”:

{
  "status": "Healthy",
  "totalDuration": "0.0013871s",
  "results": {
    "databaseHealthCheck": {
      "status": "Healthy",
      "duration": "0.0012008s",
      "description": "Data Source=myserver.ragnar.com",
      "exceptionMessage": null,
      "data": {}
    },
    "masstransit-bus": {
      "status": "Healthy",
      "duration": "4.57E-05s",
      "description": "Ready",
      "exceptionMessage": null,
      "data": {
        "endpoints": {
          "rabbitmq://localhost/EX.TESTE1.KL": {
            "status": "Healthy",
            "description": "ready"
          },
          "rabbitmq://myserver.com:8073/ragnar/1965cc78ccdn6ec9558eac77_BooksApi_bus_bhyyyyykq9eq7uekbdp175sjkh?temporary=true": {
            "status": "Healthy",
            "description": "ready (not started)"
          }
        }
      }
    }
  }
}

我知道这是一个临时队列,基于这个帖子here和这个here
我看了这篇文章here,有一个类似的问题,但不同的是,我的健康检查是“准备好”,但“尚未开始”,它的工作正常。
我没有使用AddBus配置,配置如下:
下面的代码块是Startup.cs中使用services.AddHealthCheckSetup();引用的类的一部分

public static void AddHealthCheckInfo(this IServiceCollection services)
        {
            services.AddHealthChecks()
                    .AddCheck<AppHealthCheck>(nameof(AppHealthCheck), tags: new[] { healthResource }));
        }

        public static void UseAppHealthCheck(this IApplicationBuilder app)
        {
            app.UseHealthChecks(healthInfo, GetHealthData());
            app.UseHealthChecks(healthCheckInfo, GetHealthCheckData());
        }

所有的服务都正常运行,我只是想知道这是否是我的应用程序健康检查中的错误配置。
问题是:在这个特定的情况下,是否应该显示“未启动”?

5sxhfpxr

5sxhfpxr1#

直到总线端点实际连接到消费者(通常由请求客户端,就在它发送的第一个请求之前),总线端点才启动,以避免在不使用时创建队列。
为什么?因为同样数量的人(不是更多)问“为什么要创建这个队列??我没有创建它!!”
没有任何危害,并且被认为是健康的(只是,没有启动)。如果您正在服务中主动使用请求客户端,并且希望避免第一次请求时总线端点的启动时间,您可以设置:

cfg.AutoStart = true;

配置总线时。

相关问题