我有.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());
}
所有的服务都正常运行,我只是想知道这是否是我的应用程序健康检查中的错误配置。
问题是:在这个特定的情况下,是否应该显示“未启动”?
1条答案
按热度按时间5sxhfpxr1#
直到总线端点实际连接到消费者(通常由请求客户端,就在它发送的第一个请求之前),总线端点才启动,以避免在不使用时创建队列。
为什么?因为同样数量的人(不是更多)问“为什么要创建这个队列??我没有创建它!!”
没有任何危害,并且被认为是健康的(只是,没有启动)。如果您正在服务中主动使用请求客户端,并且希望避免第一次请求时总线端点的启动时间,您可以设置:
配置总线时。