Apache kafka 何时关闭生产商或消费者

Apache kafka 何时关闭生产商或消费者,apache-kafka,kafka-consumer-api,kafka-producer-api,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,最近,我们的卡夫卡消费者和制作人出现了一些性能问题。我们在scala中使用Kafka Java API。消费者和生产者对象的打开和关闭被视为良好实践的wrt是什么?我相信这是一个非常开放的问题,正确的答案总是取决于,但我试图对此进行推理 消费者是否可以长期运行连接并保持打开状态 当我们制作完消息时,是否应该关闭制作者 消费者是否可以长期运行连接并保持打开状态 一般来说,是的 详细信息:取决于用户配置 如果你的消费者是消费群体的成员,他们当然应该被关闭——以尽早触发再平衡 如果您的消费者使用自动提

最近,我们的卡夫卡消费者和制作人出现了一些性能问题。我们在scala中使用Kafka Java API。消费者和生产者对象的打开和关闭被视为良好实践的wrt是什么?我相信这是一个非常开放的问题,正确的答案总是取决于,但我试图对此进行推理

消费者是否可以长期运行连接并保持打开状态

当我们制作完消息时,是否应该关闭制作者

消费者是否可以长期运行连接并保持打开状态

一般来说,是的

详细信息:取决于用户配置

如果你的消费者是消费群体的成员,他们当然应该被关闭——以尽早触发再平衡

如果您的消费者使用自动提交偏移量,他们仍然会继续每N毫秒提交一次(AFAIK 60k),这可能会浪费资源

否则,他们可以留下来——但为什么要浪费资源呢

当我们制作完消息时,是否应该关闭制作者

一般来说,是的


取决于您的设计,但如果您可以说在特定时间您将不再发送任何消息,则可以关闭。这并不意味着您应该在每次发送消息后关闭并重新创建生产者。

如果您不再实际使用可关闭对象,是的,关闭这些资源是一个好的JVM实践。。。这应该直接转化为Kafka API,因为代理或网络级别可能存在性能问题,客户端中还有很多其他缓冲选项,只是说您有一些“性能问题”是相当模糊的,我同意在经纪人或网络层面可能存在性能问题,但在我们经常打开和关闭消费者和生产者对象的情况下,我们会遇到问题。所以我认为这可能是一个原因。因此,发布此问题是为了从处理此类问题的专业人士那里获得见解。您可能希望“经常”澄清,甚至最好使用一个代码示例我的制作人需要在每次收到客户订单时发送消息,如果我不每次关闭并重新创建制作人,会不会有像内存泄漏和问题这样的坏事情?我面临着这样的困境:如果每次需要发送消息时都打开和关闭,这是没有效率的,但我讨厌看到内存泄漏和不关闭实现自动关闭的对象的警告。。。请澄清未关闭自动关闭的警告意味着无法找到执行关闭的代码。无论关闭/打开频率如何,这都是不好的,这是导致泄漏的原因。如果您仍然在使用它(并且还没有准备好关闭它),那么您就没有泄漏。如果你认为当你的应用程序死机时它将被关闭,你可能是不对的。这就是为什么会显示警告:您应该始终关闭,即使它在应用程序关闭期间关闭。使用try with resources,并且(形象地)永远不要担心再次关闭!