【发布时间】:2020-05-19 08:14:35
【问题描述】:
我有一个特定的用例,我正在使用来自单个主题的数据。 该主题接收包含特定类型的消息。
我的服务在这些类型和时间窗口之间有一个映射(例如,X 类型是 1 小时,Y 类型是 2 小时,等等)。 我想知道的是 - 是否可以创建一个能够使用消息、获取其类型然后根据我拥有的映射创建动态大小的窗口聚合的单个流。
例如,假设我的主题包含 3 条消息,并且我的服务具有以下映射:
Tpye X - 1 hour, Type Y - 2 hours
这些是当前在我的 Kafka 输入主题中的消息:
1. Type X
2. Type Y
3. Type X
当第一条消息到达时,我希望为类型 X 创建一个窗口聚合,该聚合将持续 1 小时。一旦一个小时结束,我想要某种业务逻辑发生。 当第二条消息到达时,它是 Y 类型的,因此会创建一个不同的窗口 2 小时,一旦完成,我希望运行一些特定的代码。
我知道我可以通过将消息分离到指定的主题(每种消息类型一个)来实现这一点,但是这些类型是动态的,我想避免创建/销毁主题。
我还查看了会话窗口,但不活动间隙仍然是静态的,它不能解决我的用例。
【问题讨论】:
标签: kafka-consumer-api apache-kafka-streams