【问题标题】:In apache kafka, what's the producer configuration to control the max wait period before getting response from kafka?在 apache kafka 中,在从 kafka 获得响应之前控制最大等待时间的生产者配置是什么?
【发布时间】:2023-03-18 08:24:01
【问题描述】:

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

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

有了这个设置,如果我已经结束了一个数据库调用和一个调用以在 POST 调用中向 Kafka 生成消息的场景,我的问题是,我如何控制/设置我的 kafka 的最长时间生产者可以等待经纪人的回应吗?

【问题讨论】:

  • 为什么你要控制时间最大时间,因为 kafka 是基于流的,直到你读取流指针不会移动到下一位,所以你只需要继续阅读不同主题的写操作,这应该可以工作! !!
  • 我不确定您是否清楚我的要求。重新迭代,从生产者端,当我生成/发布消息时,我不能等待超过 5 秒让 kafka 做出响应,因为到达我的应用程序的任何请求的 SLA 是 5 秒,这个请求可以包括除了 kafka 调用之外的 DB 调用。希望澄清

标签: apache-kafka


【解决方案1】:

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

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

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

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

有关delivery.timeout.ms的更多信息,您可以查看link

【讨论】:

  • 感谢您的回复。我看到了这种配置,并试图了解如果 linger.ms 发挥作用,因为记录到达速度快于发送速度时的负载。
  • @Raj 我不知道您使用的是哪个版本的 Kafka,但如果它是 2.1 或更高版本。您应该检查 delivery.timeout.ms 生产者配置您还应该检查此链接以获取更多信息:cwiki.apache.org/confluence/display/KAFKA/…
  • 知道了,非常感谢您提供的详细信息。
猜你喜欢
  • 2020-02-09
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
相关资源
最近更新 更多