从本质上讲,我们的应用程序有一个最终主题,即所有进程最终导致的问题,我需要能够确定何时处理所有消息。我有mongoDB集合中发送的消息数量,但是我必须能够说所有消息都已处理。我一直在尝试使用Spring Cloud Stream(这是我们所有微服务都使用的)和KStream(对我来说是新的),并尝试使用它,因此我通过ID在最后一个主题中汇总消息,并在其中增加字段mongoDB,代表已处理的消息数。但是,对于KStream,我将windowedBy()设置为30秒,它每30秒重置一次计数器(如预期的那样),但是它基本上尝试在每次出现消息时以mongo递增。下面是代码的某些部分,出于测试的考虑,将计数输出到系统中,而不是增加mongo。注意:由于我一直在进行很多更改以使其正常工作,因此窗口部件目前无法正常工作。
signed int
然后是处理器
input
.groupBy((s, domainEvent) -> domainEvent.getBoardUuid(), Serialized.with(null, domainEventSerde))
.windowedBy(TimeWindows.of(30000))
.count(Materialized.as("fileCount")).toStream()
.process(new ProcessorSupplier<Object, Long>() {
public Processor<Object, Long> get() {
// PopularPageEmailAlert is your custom processor that implements
// the `Processor` interface, see further down below.
return new testProc("generating counts");
}
});