在 apache kafka 中,在获得 kafka 响应之前,控制最大等待时间的生产者配置是什么?



在我们的应用程序中,对于导致数据更新/插入数据库的每个请求(REST 端点 POST 调用(,我们必须向 Kafka 发布/生成一条消息供下游系统使用并进行进一步处理。

而且,我们应用程序中大多数 POST 请求的 SLA 为 5 秒,并且大多数 POST 调用都是同步的。这意味着,在 POST 调用中完成的任何处理都应在 5 秒内完成,以避免超时问题。

通过此设置,如果假设我结束了数据库调用和调用以在 POST 调用中向 Kafka 生成消息,我的问题是,我如何控制/设置我的 kafka 生产者在获得代理响应之前可以等待的最长时间?

request.timeout.ms可以是您要查找的配置:

request.timeout.ms:配置控制客户端等待请求响应的最长时间。如果 在超时结束之前未收到响应,客户端将 如有必要,请重新发送请求,如果重试次数 用尽。这应该大于replica.lag.time.max.ms(a 代理配置(以减少消息重复的可能性 由于不必要的生产者重试。

对于版本 2.1 或更高版本,您还应考虑设置delivery.timeout.ms

delivery.timeout.ms:调用 send(( 返回后报告成功或失败的时间上限。这限制了总时间 记录将在发送前延迟,等待时间 来自经纪人的确认(如果预期(和允许的时间 对于可重试的发送失败。生产者可能会报告发送失败 如果出现不可恢复的错误,则早于此配置记录 遇到、重试次数已用尽或已添加记录 到达到较早交货到期期限的批次。这 此配置的值应大于或等于request.timeout.mslinger.ms.

有关delivery.timeout.ms的更多信息,您可以查看此链接。

最新更新