【问题标题】:When does Dataflow acknowledge a message of batched items from PubSubIO?Dataflow 何时确认来自 PubSubIO 的批处理项目消息?
【发布时间】:2017-06-03 06:50:48
【问题描述】:

有一个question on this topic,答案是“一旦消息持久保存在数据流管道中的某个地方,就会做出确认。”。

从概念上讲,这是有道理的,但我不确定 Dataflow 如何能够在消息被反序列化并在管道中转换之后,在其有效负载被持久化之前对其进行跟踪。

在我们的例子中,PubSub 消息包含一批项目。在收到消息并反序列化后,我们将批处理进行分解。最终,批处理中的某个项目可能会被丢弃或提交到 Datastore,具体取决于其时间戳。

确认在这种情况下如何工作?

【问题讨论】:

    标签: google-cloud-dataflow


    【解决方案1】:

    Dataflow 以包的形式执行您的代码。成功执行后,每个包都会被提交,以避免在成功处理的元素上重新执行。捆绑包不一定在管道中的每个步骤之间提交。有关何时实现和提交 PCollection 的详细信息,请参阅the description of fusion optimization

    对于 PubSub,作为包的一部分读取的消息将被确认为提交完成该包的一部分。这意味着,如果您查看 PubSub 读取步骤以及之后的任何 ParDos,它们将一起执行(并提交)。

    PubSub 读取之后添加GroupByKey 允许在将捆绑包提交到GroupByKey 后立即将消息确认到PubSub

    【讨论】:

    • 对此答案的跟进,PubSubIO 如何监控Read 之后的步骤并确定何时触发extendAcknowledgeDeadline 请求?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2022-08-17
    • 2016-11-16
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多