Spring cloud Spring云流禁用重试

Spring cloud Spring云流禁用重试,spring-cloud,spring-cloud-stream,spring-rabbit,spring-retry,spring-cloud-function,Spring Cloud,Spring Cloud Stream,Spring Rabbit,Spring Retry,Spring Cloud Function,我正在使用springcloudstream和springcloud函数以及反应式方法。我的活页夹是RabbitMQ。 根据定义,maxAttempts属性是可以处理消息的次数(这就是我的解释) 发件人: 最大尝试次数: 如果处理失败,则为处理消息的尝试次数(包括第一次)。设置为1以禁用重试。 默认值:3 问题是我的应用程序使用此(默认)配置时始终会处理消息4次。现在我想禁用重试,所以我将max-attempts设置为1,消息总是被处理2次。 我已经尝试设置spring.cloud.stream

我正在使用springcloudstream和springcloud函数以及反应式方法。我的活页夹是RabbitMQ。 根据定义,maxAttempts属性是可以处理消息的次数(这就是我的解释) 发件人:

最大尝试次数: 如果处理失败,则为处理消息的尝试次数(包括第一次)。设置为1以禁用重试。 默认值:3

问题是我的应用程序使用此(默认)配置时始终会处理消息4次。现在我想禁用重试,所以我将max-attempts设置为1,消息总是被处理2次。 我已经尝试设置
spring.cloud.stream.rabbit.bindings.input.consumer.requeue rejected=false
,尽管这是默认设置

有什么线索可以让我的邮件只处理一次吗

谢谢。

Hoxton.SR1很老了

我可以理解为什么要用这些版本重试;我将您的示例更新为最新版本,现在只提供一次


org.springframework.boot
spring启动程序父级
2.3.3.2发布
com.example
重试演示
0.0.1-快照
重试演示
SpringBoot的演示项目
11
Hoxton.SR8

我不知道它是用哪个版本修复的。

这毫无意义;使用
maxtures=1
,绑定器不会向通道适配器添加
RetryTemplate
,因此不会重试。还有别的事情。请提供一个小的,完整的,展示这种行为的例子。嗨,加里,谢谢你的回答。我在Thank Gary创建了一个小项目来演示这个问题,更新spring云版本确实解决了这个问题,所以我会接受答案。我没有提到的是,我的项目中有其他依赖项,但在最新版本中失败。例如因此,我可以做些什么来禁用重试系统并仍然保留在SR1中?SR1没有解决方法,因为重试(错误地)硬编码为重试
maxtures
(而不是
maxtures-1
)。i、 e.
maxAttempts
被视为重试次数,而不是包括原始尝试在内的总尝试次数,并且您不能设置
maxAttempts=0