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 kafka消费者/生产者如何提交消息/分区?_Apache Kafka - Fatal编程技术网

Apache kafka kafka消费者/生产者如何提交消息/分区?

Apache kafka kafka消费者/生产者如何提交消息/分区?,apache-kafka,Apache Kafka,我刚刚开始与卡夫卡合作,并开始在我的本地机器上玩卡夫卡。我能够使用confluent提供的工具生成和使用消息 到目前为止,我的理解是 kafka客户端(即消费者和生产者)维护一个消息队列。 生产者将在本地缓冲队列中存储生成的每条消息。生产者需要显式地将消息从本地缓冲区推送到kafka集群。 在使用者端,它将以某种方式从kafka集群获取消息,并将其存储在本地缓冲区队列中,然后通过api调用(如轮询)从缓冲区中提取这些消息 首先,我在这里失踪了吗 此外,我经常在两个客户机上遇到一个短语commit

我刚刚开始与卡夫卡合作,并开始在我的本地机器上玩卡夫卡。我能够使用confluent提供的工具生成和使用消息

到目前为止,我的理解是

kafka客户端(即消费者和生产者)维护一个消息队列。 生产者将在本地缓冲队列中存储生成的每条消息。生产者需要显式地将消息从本地缓冲区推送到kafka集群。 在使用者端,它将以某种方式从kafka集群获取消息,并将其存储在本地缓冲区队列中,然后通过api调用(如轮询)从缓冲区中提取这些消息 首先,我在这里失踪了吗

此外,我经常在两个客户机上遇到一个短语commit messages/offset。向卡夫卡提交消息/偏移量到底意味着什么

生产者将在本地缓冲队列中存储生成的每条消息。生产者需要明确地将消息推送到kafka集群

您可以配置批处理的大小、确认等,但不需要在调用producer.product后显式推送

在使用者端,它将以某种方式从kafka集群获取消息,并将其存储在本地缓冲区队列中,然后通过api调用(如轮询)从缓冲区中提取这些消息

你说得对

首先,我在这里失踪了吗

不,这些概念对于优化/性能非常重要,您应该注意如何配置生产者和消费者,但它们不应该影响您对生产者/消费者进行编码的方式,例如,不要对cosumer.poll进行计时

在生成端,有一个事务的概念,如果您不想发布消息,这是为了支持两阶段提交,但我不确定这如何与pythonapi一起工作。除此之外,你还应该考虑当你调用生产者产品时发送的消息。您不需要在每次producer.product之后都给producer.flush打电话

在消费端,有提交和偏移的概念。从较高的层次上讲,您可以这样想:当您进行民意调查时,您是在请求来自API的消息,但为了便于理解,您是在请求来自主题的消息。现在,当您浏览主题中的消息时,您可能希望以某种方式让卡夫卡知道您已经阅读并处理了一些消息,并且不希望再次看到它们

每个消息在主题中都有一个偏移量,这实际上是在分区中,但我们可以保持它的简单性并称之为主题。您可以将此偏移量视为主题中消息的位置—第一条消息0,第二条消息1,依此类推,添加的每条消息的偏移量都高于最后一条消息。当您显式调用commit时,实际上是在提交偏移量,并告诉Kafka您已经阅读了到目前为止的所有消息,不想再次看到它们