Google Cloud PubSub:如何只读取最新记录

Google Cloud PubSub: How to read only latest records

在 Kafka 中,有 2 个设置 earliestlatest,您可以从主题的最早偏移量 (0) 或最新事件(对实时有用)开始读取

我现在将 PubSub 与 Dataflow 和 Beam 一起使用,但默认情况下,作业似乎每次启动时都从最早开始读取。如何配置让它只读取最新的记录?

由于 latest 是 Kafka 中的默认值,谁能解释为什么这在 Pub/Sub 中不容易实现?

您可以尝试使用搜索选项:https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/seek

它仍然有点初级,因为您需要确定时间戳或快照。

我想 Apache Beam 选项会使用 withTimestampAttribute

https://beam.apache.org/releases/javadoc/2.15.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.Read.html#withTimestampAttribute-java.lang.String-

最新的定义是什么?事实上,对于 Beam,PubsubIO reader 是一个无限制的读取。也就是说,没有尽头,最近之后总有更近的!

所以,这是哲学部分。事实上,你必须定义,最新的比较什么。有了beam,可以用windowing。然后,你可以说,在 window 的 5 分钟内,我想处理最后一个 。这里latest的定义是正确的,你可以实现这个。