首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从控制台生成带有空值(Tombstone)的Kafka消息

从控制台生成带有空值(Tombstone)的Kafka消息
EN

Stack Overflow用户
提问于 2018-08-28 12:11:52
回答 2查看 8.4K关注 0票数 7

有没有办法在卡夫卡控制台生产者产生一个空值的消息(即。用墓碑把它标记给压实器删除)?

我试过制作"mykey“和”mykey“。前者产生错误,后者使值变为空字符串。像这样运行的制片人:

代码语言:javascript
运行
复制
$KAFKA_HOME/bin/kafka-console-producer --broker-list localhost:9092 --topic mytopic --property "parse.key=true" --property "key.separator=|"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 12:22:08

不幸的是,使用控制台生成器是无法做到这一点的。

这是来自ConsoleProducer类的代码片段(它如何读取数据)。卡夫卡0.11.0 (不要认为它在不同版本之间有很大的变化)。

代码语言:javascript
运行
复制
override def readMessage() = {
  lineNumber += 1
  print(">")
  (reader.readLine(), parseKey) match {
    case (null, _) => null
    case (line, true) =>
      line.indexOf(keySeparator) match {
        case -1 =>
          if (ignoreError) new ProducerRecord(topic, line.getBytes(StandardCharsets.UTF_8))
          else throw new KafkaException(s"No key found on line $lineNumber: $line")
        case n =>
          val value = (if (n + keySeparator.size > line.size) "" else line.substring(n + keySeparator.size)).getBytes(StandardCharsets.UTF_8)
          new ProducerRecord(topic, line.substring(0, n).getBytes(StandardCharsets.UTF_8), value)
      }
    case (line, false) =>
      new ProducerRecord(topic, line.getBytes(StandardCharsets.UTF_8))
  }
}

如您所见,该值始终是一个不可空的字节数组。

票数 2
EN

Stack Overflow用户

发布于 2020-01-23 12:50:43

看看卡卡 (卡夫卡的网猫)。引用医生的话:

为键"abc“生成墓碑(压缩主题的”删除“),提供一个空消息值,-Z将其解释为NULL: 回声"abc:“\x{e76f} kafkacat -b mybroker -t mytopic -Z -K:

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52057588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档