Google cloud platform Google Cloud PubSub:如何仅读取最新记录

Google cloud platform Google Cloud PubSub:如何仅读取最新记录,google-cloud-platform,apache-kafka,google-cloud-pubsub,dataflow,Google Cloud Platform,Apache Kafka,Google Cloud Pubsub,Dataflow,在卡夫卡中,有两个设置最早和最晚,您可以从主题的最早偏移量(0)或最新事件(对实时有用)读取 我现在将PubSub与Dataflow和Beam一起使用,但默认情况下,每次启动作业时都会读取最早的数据。如何配置它,使其仅读取最新记录 由于latest是卡夫卡中的默认值,有人能解释为什么在Pub/Sub中不容易做到这一点吗?您可以尝试使用seek选项: 它仍然有点初级,因为您需要确定时间戳或快照 我猜ApacheBeam选项将使用withTimestampAttribute 最新的定义是什么?事实上

在卡夫卡中,有两个设置
最早
最晚
,您可以从主题的最早偏移量(0)或最新事件(对实时有用)读取

我现在将PubSub与Dataflow和Beam一起使用,但默认情况下,每次启动作业时都会读取最早的数据。如何配置它,使其仅读取最新记录


由于
latest
是卡夫卡中的默认值,有人能解释为什么在Pub/Sub中不容易做到这一点吗?

您可以尝试使用seek选项:

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

我猜ApacheBeam选项将使用withTimestampAttribute


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


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

根据链接的文档,seek API确认早于给定时间戳的消息。因此,是的,您将阅读最后的消息,但您将丢失较旧的消息,因为它们将被确认。我不认为这是OP想要实现的。通过设置该功能,您可以避免丢失旧邮件。这将确保消息不会丢失,但要接收它们,您必须返回到较早的位置。我熟悉窗口设置,但它不适合我的情况。如果我重新启动一个应用程序,我不希望它从一开始就处理一个主题的所有消息,只处理在应用程序启动后到达的新消息。这在Beam/PubSub中是否可行?在这种情况下,将在最佳解决方案中搜索。将seek设置为Now,然后启动管道。