Apache kafka 在阿帕奇·卡夫卡中,什么';在从kafka获得响应之前,生产者配置控制最大等待时间?

Apache kafka 在阿帕奇·卡夫卡中,什么';在从kafka获得响应之前,生产者配置控制最大等待时间?,apache-kafka,Apache Kafka,在我们的应用程序中,对于每个导致数据更新/插入数据库的请求(REST端点POST调用),我们必须向Kafka发布/生成一条消息,供下游系统使用并进行进一步处理 而且,应用程序中大多数POST请求的SLA为5秒,并且大多数POST调用是同步的。这意味着,POST调用中的任何处理都应该在5秒内完成,以避免超时问题 在这种设置下,如果在一个take场景中,我结束了一个DB调用和一个在POST-call中生成Kafka消息的调用,那么我的问题是,如何控制/设置Kafka生产者在从代理获得响应之前可以等待

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

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


在这种设置下,如果在一个take场景中,我结束了一个DB调用和一个在POST-call中生成Kafka消息的调用,那么我的问题是,如何控制/设置Kafka生产者在从代理获得响应之前可以等待的最长时间

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

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

对于2.1版或更高版本,您还应该考虑设置<代码>递送.TimeOut.MS.P/> delivery.timeout.ms:返回send()调用后报告成功或失败的时间上限。这限制了总时间 在发送之前记录将被延迟,等待的时间 经纪人的确认(如预期),以及允许的时间 对于可重试发送失败。生产商可能会报告未能发送订单 如果出现不可恢复的错误,则记录早于此配置 遇到,重试次数已用尽,或已添加记录 到达提前交货截止日期的批次。这个 此配置的值应大于或等于

request.timeout.ms
linger.ms


有关
delivery.timeout.ms
的更多信息,请检查此项。

为什么要控制时间最大值时间,因为kafka是基于流的,直到您读取流为止指针不会移动到下一位,所以您只需继续读取不同主题上的写入操作,希望这些操作能够正常工作!!!我不确定你是否清楚我的要求。为了重新迭代,从生产者端开始,在我生成/发布消息时,我不能等待超过5秒到kafka的响应,因为到达我的应用程序的任何请求的SLA为5秒,并且该请求除了kafka调用之外还可以包括DB调用。希望这能澄清问题,谢谢你的回应。我看到了这种配置,并试图了解当记录到达的速度比发送的速度快时,如果linger.ms因为负载而起作用会发生什么。@Raj我不知道您使用的是哪个版本的Kafka,但它是否为2.1或更高版本。您应该查看delivery.timeout.ms producer config您还应该查看此链接以了解更多信息:明白了,非常感谢您提供的详细信息。