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

lh80um4z  于 2023-11-19  发布在  RabbitMQ
关注(0)|答案(1)|浏览(170)

我正在开发一个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软件包的配置来正确限制侦听器重试次数的指导或见解,我将不胜感激。我的设置或代码中是否遗漏了某些内容,导致重试行为无法被限制在指定的尝试次数?

zrfyljdw

zrfyljdw1#

appsettings.json中的配置是正确的。听起来RabbitOptions类可能没有配置。要做到这一点,你可以添加以下内容:

services.ConfigureRabbitOptions(config);

字符串
如果这没有帮助,你能试着做一个最小的项目,我可以看看。

相关问题