何时关闭生产者或消费者

时间:2018-11-15 22:55:43

标签: apache-kafka kafka-consumer-api kafka-producer-api

最近,我们的Kafka消费者和生产者遇到了一些性能问题。我们在Scala中使用Kafka Java API。什么是打开和关闭消费者和生产者对象的良好实践?我认为这是一个开放性很强的问题,正确的答案始终是depends,但我正在尝试对此进行推理。

消费者是否可以长期运行并保持开放状态?

一旦完成消息的产生,是否应该关闭生产者?

1 个答案:

答案 0 :(得分:1)

  

消费者是否可以长期运行并保持开放状态?

通常,是的。

详细信息:取决于您的消费者配置。

如果您的消费者是消费者组的成员,则应该将其关闭-尽早触发重新平衡。

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

否则,他们可以留下来-但是为什么要浪费资源?

  

一旦完成消息的产生,是否应该关闭生产者?

通常,是的。

取决于您的设计,但是如果您可以说在特定时间不再发送任何消息,则可以关闭。 并非表示您应该在发送每条消息后关闭并重新创建生产者。