将 Pub/Sub 还原功能与 Dataflow 结合使用

借助 Pub/Sub 还原功能,用户可以重放和重新处理以前确认的消息,也可以批量确认消息。但是,我们不建议从正在运行的 Dataflow 流水线中直接使用 Pub/Sub 还原功能。直接使用此功能会导致 Dataflow 的水印逻辑失效,并且对于“正好一次”处理也不适用。此外,直接使用此功能会与包含已处理数据的流水线状态相冲突。

我们建议通过以下工作流使用 Pub/Sub 还原功能:

  1. 制作订阅的快照。
  2. 排空 Dataflow 中的订阅消息。
  3. 重新提交流水线。

创建快照

您可以还原至订阅快照并进行重新处理。要使用 gcloud 命令行工具创建此快照,请运行以下命令:

alias pubsub='gcloud pubsub'
pubsub snapshots create my-snapshot --subscription=seek-demo-sub

如需验证是否已创建快照,请运行以下命令:

pubsub snapshots list

排空订阅

如需排空订阅并重新提交流水线,请按照以下步骤操作:

  1. 导航至 Dataflow 控制台并点击您的流处理流水线。
  2. 摘要窗格中,点击停止作业
  3. 选择排空以允许处理运行中的消息并等待作业终止。
  4. 使用 gcloud 命令行工具将订阅还原至快照:
    pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
    
  5. 重新提交您的 Dataflow 流水线。