无法在 ASP.NET Core 6.0 微服务中使用 Steeltoe 和 RabbitMQ 来限制重试

问题描述 投票:0回答:1

我正在开发一个 ASP.NET Core 微服务应用程序,其中使用 Steeltoe 包来集成 RabbitMQ 进行消息传递。我正在尝试使用 Steeltoe 包提供的 MaxAttempts 属性来实现具有最大尝试次数的重试机制,但在实现所需的行为方面遇到了困难。这是我的 appsettings.json 配置的相关部分:

"Spring": {
  "RabbitMq": {
    "Addresses": "*",
    "Template": {
      "Retry": {
        "Enabled": true,
        "MaxAttempts": 3
      }
    }
  }
}

这些是我正在使用的 Steeltoe 库:

using Steeltoe.Messaging.RabbitMQ.Attributes;
using Steeltoe.Messaging.RabbitMQ.Core;

我还在我的 Program.cs 中配置了 RabbitMQ 服务,如下所示:

builder.Services.AddRabbitServices(true);
builder.Services.AddRabbitAdmin();
builder.Services.AddRabbitTemplate();

在我的应用程序中,我有一个处理消息的 RabbitMQ 消息侦听器方法。我想使用 MaxAttempts 配置限制此侦听器的重试次数,但尽管在配置中将该值设置为 3,侦听器仍会无限期地重试。

这是我的消息侦听器方法的简化版本:

[RabbitListener(Constants.RECEIVE_AND_CONVERT_QUEUE)]
public void ListenForAMessage(ContentMessage msg)
{
    // Message processing
    // ...
}

对于如何使用 Steeltoe 包的配置正确限制监听器的重试次数,我将不胜感激。我的设置或代码中是否缺少某些内容,导致重试行为被限制为指定的尝试次数?

c# asp.net-core rabbitmq microservices steeltoe
1个回答
0
投票

appsettings.json 中的配置正确。听起来 RabbitOptions 类可能没有配置。为此,您可以添加以下内容:

 services.ConfigureRabbitOptions(config);

如果这没有帮助,你可以尝试做一个最小的项目,我可以看一下。

© www.soinside.com 2019 - 2024. All rights reserved.