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