我正在尝试通过kafka控制台生产者发送消息。但我无法输入超过4095个字符的消息。试图搜索生产者或服务器中是否存在与此相关的任何属性但无效。甚至试图搜索是否存在任何特定于OS的限制或stdin字符限制但没有找到任何内容。
请帮助通过控制台制作人发送大量消息。
答案 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