如何报告在一个时间窗口内未收到的Kafka事件

时间:2020-11-02 11:07:33

标签: apache-kafka apache-kafka-streams

说我有一个用于跟踪分布式应用程序中进度的系统。通过将ProcessStatus事件流发布到Kafka主题来跟踪进度:

data class StatusEvent(val caseId: Int, val status: ProcessStatus, val createdAt: Instant)
enum class ProcessStatus { Started, Step1Complete, Step2Complete, Finished }

我现在想生成一个输出,该输出是在“开始”状态发布后X分钟以上没有“完成”状态的所有案例的列表。

通过使用caseId将状态事件分组并过滤出没有“完成”状态的事件,我可以使用消息键caseId创建一个进行中的CaseStatus对象的日志压缩主题:

data class PendingCase(val caseId: Int, val startedAt: Instant)

问题出在这里:这将包含正在处理的案件以及“卡住”的案件。

是否存在基于Streams的方法来解决此问题?还有什么其他选择?

0 个答案:

没有答案