在 kafka 控制台上无法输入大小超过 4095 个字符的消息
Posted
技术标签:
【中文标题】在 kafka 控制台上无法输入大小超过 4095 个字符的消息【英文标题】:On kafka console not able to type message with size more than 4095 characters 【发布时间】:2016-10-08 20:37:06 【问题描述】:我正在尝试通过 kafka 控制台生产者发送消息。但我无法输入超过 4095 个字符的消息。尝试搜索生产者或服务器中是否有与此相关的任何属性,但无济于事。甚至尝试搜索是否有任何操作系统特定限制或标准输入字符限制,但没有找到任何东西。
请帮助通过控制台生产者发送大消息。
【问题讨论】:
也许这有帮助? ***.com/questions/6846263/… 有任何更新吗? 【参考方案1】:我找到了替代方案来执行此操作。使用您的输入添加一个文件,然后将其发送给生产者。使用以下命令:
cat yourFile.xml | kafka-console-producer --broker-list localhost:9092 --topic TopicName
如果您的文件内容是单行的,这会有所帮助。希望这会有所帮助。
【讨论】:
【参考方案2】:同样的事情发生在 kafkacat 上,因为如果 shell 上的缓冲区是一个问题,所以如果你想为 kafkacat 做这个,把它保存到一个文件中,比如说yourFile.xml
然后继续:
cat yourFile.xml | kafkacat -b localhost:9092 -P -t TopicName
【讨论】:
这会将文件的每一行作为单独的消息发送。如果要将整个文件作为一条消息发送,则需要将其作为命令行参数传递,如下所示:kafkacat -b ..brokers.. -P -t TopicName yourfile.xml
【参考方案3】:
如果你发送这样的消息,你也会达到一个限制(其中 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 设置几个配置,如本答案中所述:
https://***.com/a/21343878/4602706但在 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
【讨论】:
以上是关于在 kafka 控制台上无法输入大小超过 4095 个字符的消息的主要内容,如果未能解决你的问题,请参考以下文章