【发布时间】:2016-09-01 11:28:48
【问题描述】:
我有一个用例,我使用队列中的某些日志并使用该日志中的一些信息访问一些第三方 API,以防第三方系统没有正确响应,我希望为该特定日志实现重试逻辑.
我可以添加一个时间字段并将消息重新推送到同一个队列,如果它的时间字段有效,即小于当前时间,则该消息将再次被消费,否则再次被推送到队列中。
但是这个逻辑会一次又一次地添加相同的日志,直到重试时间正确并且队列会不必要地增长。
有没有更好的方法在 Kafka 中实现重试逻辑?
【问题讨论】:
-
如果第三方 API 在您想发送消息 N 时没有响应,那么继续发送消息 N+1、N+2 等并稍后返回消息 N 是否有意义?如果没有,似乎没有必要让 Kafka 帮助重试。只需让您的消费者退后几秒钟、几分钟、几小时,然后再次推送消息 N。
-
是的,首先我想到了一些类似的方法,在失败的情况下我将寻求消费者到可渗透的偏移量。但是有没有办法限制消费者在 N 单位时间内消费消息?
标签: apache-kafka kafka-consumer-api kafka-producer-api