借助 Pub/Sub 还原功能,用户可以重放和重新处理以前确认的消息,也可以批量确认消息。但是,我们不建议从正在运行的 Dataflow 流水线中直接使用 Pub/Sub 还原功能。直接使用此功能会导致 Dataflow 的水印逻辑失效,并且对于“正好一次”处理也不适用。此外,直接使用此功能会与包含已处理数据的流水线状态相冲突。
我们建议通过以下工作流使用 Pub/Sub 还原功能:
- 制作订阅的快照。
- 排空 Dataflow 中的订阅消息。
- 重新提交流水线。
创建快照
您可以还原至订阅快照并进行重新处理。要使用 gcloud
命令行工具创建此快照,请运行以下命令:
alias pubsub='gcloud pubsub' pubsub snapshots create my-snapshot --subscription=seek-demo-sub
如需验证是否已创建快照,请运行以下命令:
pubsub snapshots list
排空订阅
如需排空订阅并重新提交流水线,请按照以下步骤操作:
- 导航至 Dataflow 控制台并点击您的流处理流水线。
- 在摘要窗格中,点击停止作业。
- 选择排空以允许处理运行中的消息并等待作业终止。
- 使用
gcloud
命令行工具将订阅还原至快照:pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
- 重新提交您的 Dataflow 流水线。