我已经实现了自己的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
才能使其正常工作?
谢谢!