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
Java 卡夫卡简单的消费者和消息大小-是否读取部分消息?_Java_Apache Kafka_Kafka Consumer Api - Fatal编程技术网

Java 卡夫卡简单的消费者和消息大小-是否读取部分消息?

Java 卡夫卡简单的消费者和消息大小-是否读取部分消息?,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我正在使用简单消费者阅读卡夫卡主题,并且有一个关于获取大小与主题中消息大小的关系的问题 比如说,我在主题中的每条消息都是10KB 当我使用从偏移量0开始的、获取大小为16 kb的消息时(为了回答这个问题),它是否读取了1条完整消息,而另一条部分消息读取了6 kb 这些国家的情况如下,但我没有看到它发生 作为优化,允许服务器返回部分消息 在消息集的末尾。客户应该处理这个案件 如果深入了解如何编码,您会注意到它们前面通常有一个以字节为单位的大小(与所有其他结构不同,该大小是项目计数),因此客户端首先

我正在使用简单消费者阅读卡夫卡主题,并且有一个关于获取大小与主题中消息大小的关系的问题

比如说,我在主题中的每条消息都是10KB

当我使用从偏移量0开始的、获取大小为16 kb的消息时(为了回答这个问题),它是否读取了1条完整消息,而另一条部分消息读取了6 kb

这些国家的情况如下,但我没有看到它发生

作为优化,允许服务器返回部分消息 在消息集的末尾。客户应该处理这个案件

如果深入了解如何编码,您会注意到它们前面通常有一个以字节为单位的大小(与所有其他结构不同,该大小是项目计数),因此客户端首先读取消息集的大小,然后读取实际消息集的N个字节。消息也是如此-首先读取大小,然后读取大小为N的实际消息

在没有优化的情况下,Kafka服务器将检查fetch响应是否超过fetch大小,并回滚最后一条消息

这里的优化非常简单:它不需要跟踪在哪里回滚以形成一个没有剪切消息的漂亮的fetch响应,而是简单地累积消息,直到超过fetch大小,并且只剪切所有超过fetch大小的内容

<> P> >代码>客户端应处理此情况< /代码>,这意味着任何一个Wire协议实现者都应该准备好,例如,一个大小为100的消息集可能没有100个字节来读取,因此客户端不应该失败,并将其视为正常行为。
希望这能有所帮助。

我不确定自己是否仍然理解。例如,主题中有10条消息,每条消息的大小为12字节。让我们假设提取大小为50KB。您的意思是说,它读取4条消息,当读取第5条消息时,由于它已超过50 kb,它将截断第5条消息?不确定是否总是会发生这种情况,但是的,第5条消息可能会被截断,客户端应忽略这一点。事实上,如果您使用的是一些现成的消费者实现,您甚至不会在FetchResponse(或它向您公开的任何内容)中看到第5条消息。谢谢。当再次发送请求时,第五条消息将被提取,对吗?@ManikandanKannan