在 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 个字符的消息的主要内容,如果未能解决你的问题,请参考以下文章

如何打印在控制台上超过ULLONG_MAX的号码?

我想在控制台上输出二维码?

在linux控制台上计算mp3库的大小

无法在 Firebase 控制台上查看事件参数

修复系统控制台上的显示乱码

如何去掉控制台上输出的这些日志