Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

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 使用Kafka处理大型消息_Java_Apache Kafka_Kafka Consumer Api_Kafka Producer Api - Fatal编程技术网

Java 使用Kafka处理大型消息

Java 使用Kafka处理大型消息,java,apache-kafka,kafka-consumer-api,kafka-producer-api,Java,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,如何处理卡夫卡中的大型消息,如超过20MB等 [2019-03-13 08:59:10923]向主题测试发送消息时出错,键为13字节,值为11947696字节,有错误:(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.RecordTooLargeException:请求包含的消息大于服务器将接受的最大消息大小 [2019-03-13 03:59:144

如何处理卡夫卡中的大型消息,如超过20MB等

[2019-03-13 08:59:10923]向主题测试发送消息时出错,键为13字节,值为11947696字节,有错误:(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.RecordTooLargeException:请求包含的消息大于服务器将接受的最大消息大小

[2019-03-13 03:59:14478]向主题测试发送消息时出错,键为13字节,值为11947696字节,有错误:(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.RecordTooLargeException:序列化时消息为11947797字节,大于您使用max.request.size配置的最大请求大小。

我们需要设置以下配置

经纪人

replica.fetch.max.bytes:更改此属性将允许代理中的副本在群集中发送消息,并确保消息被正确复制。如果该值太小,则消息将永远不会被复制,因此,使用者将永远不会看到消息,因为消息将永远不会被提交(完全复制)

message.max.bytes:这是代理可以从生产者接收的消息的最大大小

经纪人(主题)

max.message.bytes:卡夫卡允许的最大记录批量大小。如果此值增加,并且存在早于0.10.2的使用者,则使用者的获取大小也必须增加,以便使用者能够获取如此大的记录批次。在最新的消息格式版本中,为提高效率,记录始终分组为批。在以前的消息格式版本中,未压缩的记录不会分组为批,在这种情况下,此限制仅适用于单个记录(默认为代理的message.max.bytes)

制作人

max.request.size:请求的最大大小(以字节为单位)。此设置将限制制作者在单个请求中发送的记录批数,以避免发送大量请求。这实际上也是最大记录批量大小的上限。请注意,服务器对记录批量大小有自己的上限,这可能与此不同

压缩。键入:设置为snappy,这将增加可随单个请求发送的数据总量,并且应与更大的batch.size配对

缓冲区。内存:如果启用了压缩,则缓冲区大小也应增大

批处理。大小:批处理大小应至少为10s KB,在300kb左右可以看到收益递减(远程客户端的收益减少)。批量越大,压缩比也越高

linger.ms:linger.ms抢占对批量大小设置的任何界限。增加此值以确保在较慢的生产时间内不会发送较小的批次

消费者

fetch.message.max.bytes:这将确定消费者可以获取的消息的最大大小

max.partition.fetch.bytes:服务器将返回的每个分区的最大数据量