Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 Kafka-发生这种情况时,提交的偏移量大于客户端实际处理的最后一条消息的偏移量_Apache Kafka_Confluent Platform - Fatal编程技术网

Apache kafka Kafka-发生这种情况时,提交的偏移量大于客户端实际处理的最后一条消息的偏移量

Apache kafka Kafka-发生这种情况时,提交的偏移量大于客户端实际处理的最后一条消息的偏移量,apache-kafka,confluent-platform,Apache Kafka,Confluent Platform,我正在浏览权威指南,偶然发现了这句话 如果提交的偏移量大于最后一条消息的偏移量 客户端实际处理了上一次处理之间的所有消息 消费者组将丢失偏移量和已提交的偏移量 想知道这是什么时候发生的吗?我理解了另一种情况,即提交的偏移量较小,在这种情况下,使用者将不得不放弃提交最新的偏移量。这不会发生在消息的正常使用中 我只是查看了这本书,几页之后它解释了如何提交提供的任意偏移量 之所以提到这一点,是为了说明客户机可以前后跳跃。我想不出有什么好的理由可以使用它,除了因为出错而不得不重播一些消息,这样应用程序就

我正在浏览权威指南,偶然发现了这句话

如果提交的偏移量大于最后一条消息的偏移量 客户端实际处理了上一次处理之间的所有消息 消费者组将丢失偏移量和已提交的偏移量


想知道这是什么时候发生的吗?我理解了另一种情况,即提交的偏移量较小,在这种情况下,使用者将不得不放弃提交最新的偏移量。

这不会发生在消息的正常使用中

我只是查看了这本书,几页之后它解释了如何提交提供的任意偏移量


之所以提到这一点,是为了说明客户机可以前后跳跃。我想不出有什么好的理由可以使用它,除了因为出错而不得不重播一些消息,这样应用程序就可以在流中来回跳转,在这里和那里重播一些消息。

这不是正常的消息消费

我只是查看了这本书,几页之后它解释了如何提交提供的任意偏移量


之所以提到这一点,是为了说明客户机可以前后跳跃。我想不出什么好的理由来使用它,除了由于错误而不得不重播一些消息,这样应用程序就可以在流中来回跳转,在这里和那里重播一些消息。

如果启用了自动提交,并且消息的实际处理,例如DB save,调用其他下游系统等所需的时间超过自动提交持续时间(为auto.commit.interval.ms设置的值)。在快乐路径场景中,这不会是一个问题,但在错误情况下,您可能希望再次轮询相同的消息。由于这个原因,我在我的项目中禁用了用例的自动提交,并用于在“实际处理”完成后手动提交偏移量。

如果启用了自动提交,并且消息的实际处理(例如,DB save、调用另一个下游系统等)花费的时间超过自动提交持续时间,则可能会出现这种情况(值设置为auto.commit.interval.ms)。在快乐路径方案中,这不会是一个问题,但在错误情况下,您可能希望再次轮询相同的消息。因此,我在项目中禁用了用例的自动提交,并用于在“实际处理”完成后手动提交偏移量。

对,我考虑的是与偏移量相同的问题“已承诺”并且不会在意经纪人或消费者是否下跌。“快进”的另一个原因是如果你有毒丸消息。在这种情况下,可以通过更改已承诺的偏移量来“跳过”消息。这真的很有趣(不是真的)当由于某种原因,无效消息最终出现在记录流中时。我们如何知道它是否是毒药丸消息,除非我们读取它,仅通过日志中的异常跟踪和监视工具触发警报:D。正如您所说,消息已读取,则无法对其进行反序列化或处理。通常在这一点上,应用程序将d记录一些会触发警报的信息。由于卡夫卡保证排序,它无法继续下一条消息,因此它会一次又一次地尝试同一条消息…嗯,对-我认为这将倾向于使用“死队列”模式来保存无效消息并继续…对,我的想法与偏移量相同”“已提交”并且不会在意经纪人或消费者是否已提交。“快进”的另一个原因是如果您有毒丸消息。在这种情况下,可以通过更改提交的偏移量来“跳过”消息。这变得非常有趣(不是真的)当由于某种原因,无效消息最终出现在记录流中时。我们如何知道它是否是毒药丸消息,除非我们读取它,仅通过日志中的异常跟踪和监视工具触发警报:D。正如您所说,消息已读取,则无法对其进行反序列化或处理。通常在这一点上,应用程序将d记录一些会触发警报的信息。由于卡夫卡保证排序,它无法继续下一条消息,因此它会一次又一次地尝试同一条消息…嗯,对-我认为这是我们倾向于使用“死队列”的地方“保存此无效消息并继续移动的模式……您的意思是偏移被接收,但消息没有真正处理,消费者离线。下次,下次消费时,下游系统将在消息未被处理时再次轮询消息。是的,这也是一个场景。考虑一下,1)。消费者轮询并接收来自0-5偏移量的消息,2)然后这些消息经过处理逻辑,例如保存到DB和保存到DB失败3)同时偏移量已经自动提交,因此下次您将收到来自6和以后的消息。现在,由于处理失败,您希望再次轮询邮件,以便可以重试,但由于偏移量已提交,因此无法重试。当您说“同时偏移量已自动提交”时,是否会“自动”执行此操作在后台独立于轮询循环?您的意思是偏移量已提交,但消息未真正处理,消费者脱机。下一次,下一次消费者消费时,下游系统将再次轮询消息,因为消息未被处理?是的,这也是一种情况。考虑这一点,1)消费者从0到5偏移的查询和接收的消息,2)然后这些消息经过处理逻辑,例如保存到DB和保存到DB失败3),同时偏移已经自动提交,所以下次你会从6和以后得到消息。现在,由于处理失败,您可能希望再次轮询消息,以便可以重试