Kafka Streams Punctuator检查StateStore中某个条目的发送时间

时间:2019-04-26 19:57:04

标签: apache-kafka-streams

我已经实现了自己的Transformer,在这里我在StateStore中累积了事件(进入内部changelog kafka主题),一旦累积了X个事件,我就向下累积一个事件流。

一切都完美无缺,但是如果一段时间内没有新事件发布,我不希望将累积事件卡在管道中。

这就是为什么我决定使用Punctuator的原因:

@Override
public void init(ProcessorContext context) {
    this.context = context;
    this.kvStore = (KeyValueStore<Patient, Long>) this.context.getStateStore(stateStore);
    this.context.schedule(Duration.ofMinutes(180), PunctuationType.WALL_CLOCK_TIME, (timestamp) -> {
      KeyValueIterator<Event, Long> iter = kvStore.all();
      while (iter.hasNext()) {
        KeyValue<Event, Long> entry = iter.next();
        ...
      }
      iter.close();
      context.commit();
    });

}

问题是StateStore中的条目不包含时间发送信息。有办法访问吗?我是否需要实现自己的自定义StateStore才能使其正常工作?

谢谢!

0 个答案:

没有答案