使用以下配置和方案,达到maxAttempts会发生什么?
使用Kafka绑定的Spring Cloud Stream和以下属性:
以下是该方案:
我看到的行为是消费者重试消息,直到达到maxAttempts限制。然后在重新启动服务之前没有任何反应。重启后,消息将被重新消耗。
如果在达到maxAttempts后数据库再次可用,会发生什么?我是重启服务的唯一选择吗?有没有办法将maxAttempts设置为无穷大?
我怀疑我没有完全理解这种行为
答案 0 :(得分:1)
这确实是预期的行为,因为您设置为不自动提交错误消息。会发生什么,这使客户端有机会从最后提交的偏移重放。
将maxAttempts设置为无穷大的问题是当发生不可恢复的错误时,您的监听器会尝试反复使用该消息。
更好的方法可能是为这些消息设置dlq,然后使用PollableChannel定期轮询消息并尝试重新处理它们,这将为您的外部资源提供一些时间来恢复。