默认情况下,Kafka topic 中每条消息的默认限制为 1MB。这是因为在 Kafka 中,非常大的消息被认为是低效和反模式的。然而,有时候你可能需要往 Kafka 中发送大消息。在本文中我们将研究在 Kafka 中处理大消息的两种方法。
选项 1:使用外部存储
将大消息(例如视频文件)发送到外部存储,在 Kafka 中只保存这些文件的引用,例如文件的 URL。外部存储可以是云存储(例如 Amazon S3),也可以是网络存储(NAS)或者 HDFS 等本地大型文件存储系统。
选项 2:修改 Kafka 消息大小限制(适用于大于 1MB 小于 10 MB 的消息)
这里我们需要修改 broker, consumer, producer 3 个部分的配置,以允许处理更大的消息。
Broker 服务端
在 broker 端有两种修改最大消息大小的方式:
-
message.max.bytes
静态参数在 broker 级别生效,影响所有的 topic,需要修改 server.properties 文件,并重启 Kafka 集群。