有没有办法获得kafka流中消耗的每条消息的偏移量?

时间:2017-07-06 09:35:13

标签: apache-kafka-streams

为了避免在杀死KAFKA STREAMS时读取已处理但未提交的消息,我想获取每条消息的偏移量以及键和值,以便我可以将其存储在某处并使用它避免重新处理已处理的消息。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。请参阅http://docs.confluent.io/current/streams/faq.html#accessing-record-metadata-such-as-topic-partition-and-offset-information上的常见问题解答条目。

我将复制粘贴以下关键信息:

  

访问主题,分区和偏移信息等记录元数据?

     

可以通过Processor API访问记录元数据。   它也可以通过DSL间接访问它   Processor API integration

     

使用Processor API,您可以通过a访问记录元数据   ProcessorContext。您可以在上下文中存储对上下文的引用   在Processor#init()期间处理器的实例字段,然后   例如,查询Processor#process()内的处理器上下文   (Transformer)相同。上下文会自动更新以匹配   当前正在处理的记录,表示方法   例如ProcessorContext#partition()总是返回当前值   记录的元数据。调用处理器时会出现一些警告   punctuate()中的上下文,有关详细信息,请参阅Javadoc。

     

例如,如果您将DSL与自定义Transformer结合使用,   您可以将输入记录的值转换为也包括分区   和偏移元数据,以及后续的DSL操作,如map或   然后filter可以利用这些信息。