繁体   English   中英

什么是 w.r.t 关闭/维护卡夫卡生产者中的连接的好策略

[英]What is a good strategy w.r.t closing/maintaining connections in kafka producers

我有一个接收消息并处理它们的队列监听器应用程序。 对于每条传入消息,都会将一个事件发送到 Kafka 主题。 传入消息的频率因一天中的时间而异。

令我困惑的是:我什么时候应该关闭与 Producer 中的 Kafka 代理的连接(我正在使用 java 库 - kafka-clients)。 这些是我的一些选择:

  • 为每个请求创建一个新的生产者。 这似乎是一种开销,尤其是在负载高的高峰时段

  • 为应用程序创建单个生产者,并通过将代理中的配置“connection.max.idle.ms”设置为高值(可能是应用程序保持空闲的最大估计时间?)来保持连接处于活动状态。仅在以下情况下关闭连接应用程序已关闭。 这似乎比第一个选项更容易接受,但它仍然有一个缺点,即在应用程序的空闲时间(有时可能是几个小时)保持连接打开

  • 创建一个生产者并允许它在最大空闲时间(默认 9 分钟)后关闭与代理的连接。 在发送消息之前,检查生产者连接是否存在,如果不存在则创建一个新的生产者。 这个选项对我来说听起来不错——空闲时关闭连接,有需求时创建一个新连接。 但是我以前没有遇到过这个,我想知道它是否有一些缺点。 而且我在 API (KafkaProducer) 中看不到允许我检查连接是否存在的方法

有没有人遇到过这个问题? 你是怎么解决的?

谢谢。

我建议在整个应用程序中保留一个实例。

您可以创建一个次要心跳主题并每秒或每分钟发送一条简单消息,等等,这将使连接保持活动状态......通过这种策略,我建议将该新主题的保留率降低到非常低或使其紧凑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM