Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡消费会话超时_Apache Kafka_Kafka Consumer Api - Fatal编程技术网

Apache kafka 卡夫卡消费会话超时

Apache kafka 卡夫卡消费会话超时,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,我们有一个应用程序,消费者读取一条消息,线程执行许多操作,包括在生成另一主题的消息之前访问数据库。在线程上消耗和生成消息之间的时间可能需要几分钟。一旦生成了指向新主题的消息,就会进行提交,以表明我们已经完成了对消费者队列消息的处理。自动提交因此被禁用 我使用的是高级消费者,我注意到zookeeper和kafka会话超时,因为我们在消费者队列上执行任何操作之前花费的时间太长,所以每次线程返回以从消费者队列读取更多内容时,kafka都会重新平衡,并且消费者在一次事件后读取新消息之前花费的时间也很长一

我们有一个应用程序,消费者读取一条消息,线程执行许多操作,包括在生成另一主题的消息之前访问数据库。在线程上消耗和生成消息之间的时间可能需要几分钟。一旦生成了指向新主题的消息,就会进行提交,以表明我们已经完成了对消费者队列消息的处理。自动提交因此被禁用

我使用的是高级消费者,我注意到zookeeper和kafka会话超时,因为我们在消费者队列上执行任何操作之前花费的时间太长,所以每次线程返回以从消费者队列读取更多内容时,kafka都会重新平衡,并且消费者在一次事件后读取新消息之前花费的时间也很长一会儿

我可以将zookeeper会话超时设置得很高,以避免出现问题,但随后我必须相应地调整重新平衡参数,卡夫卡在一段时间内不会再遇到新的消费者


我有什么办法来解决这个问题?有没有办法让卡夫卡和动物园管理员都开心?如果我使用一个简单的消费者,我还会遇到同样的问题吗?

听起来您的问题归结为依赖高级消费者来管理上次读取的偏移量。使用一个简单的使用者可以解决这个问题,因为您可以控制该偏移量的持久性。请注意,高级使用者提交的所有操作都是在zookeeper中存储上次读取的偏移量。没有采取其他操作,您刚才读取的消息仍然在分区中,其他使用者也可以读取

使用kafka simple consumer,您可以更好地控制偏移存储发生的时间和方式。您甚至可以将该偏移保留在Zookeeper之外的其他位置(例如,数据库)


坏消息是,虽然简单消费者本身比高级消费者更简单,但要使其工作起来,您需要在代码方面做更多的工作。您还必须编写代码来访问多个分区,这是高级消费者为您做的非常好的事情。

我认为问题在于消费者的轮询方法触发消费者的心跳请求。当您增加session.timeout时。消费者的心跳将无法到达协调器。由于心跳跳动,协调员标记消费者死亡。而且消费者重新加入非常缓慢,尤其是在单一消费者的情况下

我遇到了一个类似的问题,为了解决这个问题,我必须在consumer配置属性中更改以下参数

session.timeout.ms= request.timeout.ms=超过会话超时

您还必须在kafka broker节点的server.properties中添加以下属性。 group.max.session.timeout.ms=

有关更多详细信息,请参见以下链接。

如果你只是解释你的问题,你就更有可能得到帮助。说你“想得到一些反馈”可能会让你的问题结束。堆栈溢出不是一个论坛;我们重视简洁和直截了当。嗨,我也面临同样的问题,但在新卡夫卡版本中,简单的消费者被贬低了。现在怎么做?