我的管道使用更像是滚动更新程序 . 它从Kafka开始,获取消息,并不断更新更新程序,最后从更新程序生成0或多个决策事件 . 它更像是有状态的ParDo,在本文中描述:https://beam.apache.org/blog/2017/02/13/stateful-processing.html

kafka => [message] =>有状态的pardo => [决策]

在这种情况下,消息的顺序非常重要,每条消息都有自己的序列号 . 我们必须以正确的顺序向更新程序提供消息 .

我想使用水印机制来确保输入有状态ParDo的消息的顺序正确 . 假设我们可以使用1分钟的水印容差,所以整个管道将获得1分钟的延迟,但apache beam将处理无序的情况 .

我尝试对此进行编码,但apache beam的每个示例都结合了窗口和水印触发器 . 实际上,我没有看到在我的用例中需要窗口化,它只是一个有状态的ParDo .

关于如何在apache梁上设计管道的任何想法?