背景
在Designing Event-Driven Systems一书中,作者强调了业务系统中的一个常见用例,其中需要等待或发生N个事件。
给出的示例是一个订单服务,它需要等待三个单独的验证服务,它们都通过同一个主题发送,以返回一个PASS. (我将其解释为在同一个主题上会有三个具有相同键的验证消息,每个都有一个指示成功或失败的值。)
作者表示,解决方案将采用以下形式(假设计数是基于key的):
- 按键分组。
- 计算每个键的出现次数(使用通过窗口执行的聚合器)。
- 过滤输出以获得所需的计数。
问题
上述每个步骤究竟是如何工作的,涉及哪些类/方法?
- 特别是第一步(按key分组)是指使用KStream::groupByKey方法吗?
- 如果是这样,输出将是一个KGroupedStream,并且第二步可能使用Count方法之一并返回一个KTable。
- 但是,有了 KTable,我们如何按照第三步过滤 KTable 上的输出?