在kafka控制台上无法输入大小超过4095个字符的消息

时间:2016-06-08 14:05:11

标签: linux apache-kafka kafka-producer-api

我正在尝试通过kafka控制台生产者发送消息。但我无法输入超过4095个字符的消息。试图搜索生产者或服务器中是否存在与此相关的任何属性但无效。甚至试图搜索是否存在任何特定于OS的限制或stdin字符限制但没有找到任何内容。

请帮助通过控制台制作人发送大量消息。

3 个答案:

答案 0 :(得分:5)

我找到了替代方案。添加一个包含输入的文件,然后将其发送给生产者。使用以下命令:

cat yourFile.xml | kafka-console-producer --broker-list localhost:9092 --topic TopicName

如果您的文件内容是单行的,这会有所帮助。希望这有帮助。

答案 1 :(得分:0)

kafkacat 也会发生同样的事情,因为如果 shell 上的缓冲区存在问题,那么如果您想为 kafkacat 执行此操作,请将其保存到文件中,例如 yourFile.xml 并继续:

cat yourFile.xml | kafkacat -b localhost:9092 -P -t TopicName

答案 2 :(得分:0)

如果你发送这样的消息,你也会受到限制(file.csv 有 9.4M)

▶ cat file.csv | kafkacat -P -vv -b $YOURBROKER -t $YOURTOPIC
% Fatal error at produce:200:
% ERROR: Failed to produce message (9898223 bytes): Broker: Message size too large

您需要在 BrokerSide 设置几个配置,如本答案中所述:

但在 Producer 端,您还需要指定 message.max.bytes

使用 Kafkacat 你可以这样做:

▶ cat file.csv | kafkacat -P -X message.max.bytes=20971520  -vv -b $YOURBROKER -t $YOURTOPIC
% Message delivered to partition 10 (offset 0) on broker 2