代码之家  ›  专栏  ›  技术社区  ›  Neer1009

如何解析卡夫卡流中的卡夫卡头?

  •  0
  • Neer1009  · 技术社区  · 6 年前

    加上 Headers 记录在案( ProducerRecord & ConsumerRecord )在卡夫卡0.11中,在处理带有卡夫卡流的主题时,是否可以获取这些标题?当调用诸如 map KStream 它提供了 key 还有 value 但我看不到进入 headers .如果我们能 地图 过去 ConsumerRecord s

    前任。

    KStreamBuilder kStreamBuilder = new KStreamBuilder();
    KStream<String, String> stream = kStreamBuilder.stream("some-topic");
    stream
        .map((key, value) ->  ... ) // can I get access to headers in methods like map, filter, aggregate, etc?
        ... 
    

    像这样的方法会奏效:

    KStreamBuilder kStreamBuilder = new KStreamBuilder();
    KStream<String, String> stream = kStreamBuilder.stream("some-topic");
    stream
        .map((record) -> {
            record.headers();
            record.key();
            record.value();
        })
        ...
    
    0 回复  |  直到 8 年前
        1
  •  21
  •   Matthias J. Sax    5 年前

    自版本2.0.0(参见。 KIP-244 详细信息)。

    您可以通过处理器API(即,通过 transform() , transformValues() process() ),通过给定的“上下文”对象(参见。 https://docs.confluent.io/current/streams/developer-guide/processor-api.html#accessing-processor-context ).

    使现代化

    从2.7.0版本开始,处理器API得到了改进(参见。 KIP-478 ),增加了一种新型保险柜 api.Processor 上课 process(Record) 而不是 process(K, V) 方法对于这种情况,可以通过 Record 类)。

    这个新功能是 还没有 在DSL的PAPI方法中(例如。 KStream#process() , KStream#transform() 和兄弟姐妹)。

    +++++

    在2.0之前,上下文只公开主题、分区、偏移量和时间戳,而不公开在旧版本中实际上由流在读取时丢弃的头。

    KIP-159 .

    推荐文章