是否可以加入2个Kafka KStreams,其中JoinWindows持续时间存储在1个流的对象中?

时间:2017-12-15 06:59:40

标签: apache-kafka apache-kafka-streams

假设我有两个流:

  1. TimeWindow(开始时间,结束时间)
  2. 数字(带时间戳)
  3. 是否可以使用DSL API或Process API加入流,以便输出包含TimeWindow对象,该对象包含TimeWindow中指定的时间范围内的数字总和?
    具体而言,如何在 win.getDuration()中将XXX设置为持续时间存储的位置,其中 win 是ValueJoiner中引用的那个。

    timeWindow.join(  
        numbers,   
        (ValueJoiner<TimeWindow, Number, TimeWindow>) (win, num) -> win.addToTotal(num),  
        new JoinWindows(XXX, 0)
    ).to("output_Topic");
    

    之后的JoinWindows为0,因为TimeWindow的时间戳是结束时间。 XXX持续时间应计算为TimeWindows结束时间 - 以毫秒为单位的开始时间。

    非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

感谢Matthias&#39;我最终回滚使用Processor API与TimestampExtractors的实现和内存状态存储的使用(默认使用RockDB)来实现这个功能。