当前位置: 首页 > 知识库问答 >
问题:

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

宗政招
2023-03-14

我试图通过Kafka控制台制作人发送消息。但我无法键入超过4095个字符的消息。尝试搜索生产者或服务器中是否存在与此相关的任何属性,但无效。甚至试图搜索是否有任何操作系统特定的限制或标准输入字符限制,但没有找到任何东西。

请帮助通过控制台生产者发送大消息。

共有3个答案

谈旺
2023-03-14

如果您发送这样的消息,您也会受到限制(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://stackoverflow.com/a/21343878/4602706

但是在生产者端,您还需要指定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
邓正真
2023-03-14

kafkacat也会发生同样的情况,因为如果shell上的缓冲区存在问题,那么如果要为kafkacat执行此操作,请将其保存到一个文件中,比如说yourFile。xml并随附:

cat yourFile.xml | kafkacat -b localhost:9092 -P -t TopicName
沈英勋
2023-03-14

我找到了一个替代者来做这件事。使用您的输入添加一个文件,然后将其发送给制作人。使用以下命令:

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

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

 类似资料:
  • 问题内容: 当用户在Java中键入单个字符时,是否有一种简单的方法可从控制台读取它?可能吗?我尝试了这些方法,但是它们都在等待用户按Enter键: 我开始认为System.in在按下Enter之前不知道用户输入。 问题答案: 您要做的是将控制台置于“原始”模式(绕过行编辑且无需输入键),而不是“经烹煮”模式(需要输入键进行行编辑)。在UNIX系统上,“ stty”命令可以更改模式。 现在,关于Ja

  • 我正在我的Spring Boot应用程序中使用Logback。 null

  • 问题内容: 我有这个程序,它遍历ArrayList并使用System.out将各种与手机相关的信息打印到控制台。 我的问题是,名称较长的客户会“推”空格字符串,导致对齐混乱。有什么办法可以使对齐方式一致吗? 问题答案: 首先,您需要计算每列的最大宽度… 掌握这些信息后,您可以简单地使用生成一个值来填充,使其符合要求 这是我从先前关于类比主题的问题所修改的一个示例。 这将生成并输出类似的

  • (最终目标)在尝试是否最终可以从Confluent平台读取avro数据usng spark stream之前,如这里所述:将spark结构化流与Confluent Schema Registry集成 我要验证是否可以使用以下命令来读取它们: 我收到这个错误消息,未知的魔法字节 注意,可以这样读取消息(使用console consumer而不是avro console consumer): 该消息是

  • 我目前有一个简单的函数(发布在下面),它问用户一个问题,并希望有一个整数答案。 是否有一种方法可以使java限制可以输入控制台的字符,即只允许输入数字。 我知道在其他编程语言中有简单的方法来实现这一点,但我应该如何在java中实现这一点并将其实现到我的函数中呢?

  • 如何获得Kafka单张唱片的大小? 有一些关于我为什么需要这个的说明。 这似乎不是在ConsumerRecord或RecordMetadata类上公开的serializedValueSize。我并不真正理解这个属性的价值,因为它与对消费者有用的消息的大小不匹配。serializedValueSize用于什么? 最大Poll.Records 在对poll()的单个调用中返回的最大记录数。 这并不存在