Google Cloud Scheduler 在每天的特定时间后启动任务,但前提是 Pub/Sub 消息到达

Google Cloud Scheduler to start a task after a specific time every day, but only if a Pub/Sub message arrives

是否可以在 Google 云中实现调度程序与 pub/sub 之间的互操作性,以便在特定时间 之后触发任务每天,但仅当 有消息到达时?

更新:

示例是为 10:00 安排的任务正在等待消息(先决条件)。

  1. 在 10:00 时,消息尚未到达。作业未被触发。消息到达 11:00。作业被触发。 (然后它可以发送一个消息来启动要执行的任务)
  2. 在 09:00 消息到达。作业未执行。在 10:00 时触发作业。
  3. 消息从未到达。永远不会执行作业。

Google 推荐的做法是使用 Google Cloud Composer 这样的任务。

您可以将云作曲器用于各种用例,包括批处理、实时/流处理和 cron 作业/计划任务样式处理。

https://cloud.google.com/composer/

在引擎盖下,Composer 运行在托管的 GKE 集群上使用 Apache Airflow。因此,它不仅是编排工具,而且还提供了使用 DAG(本质上是云函数)运行 代码的能力。看看下面的一些示例 DAG 触发器:

https://cloud.google.com/composer/docs/how-to/using/triggering-with-gcf

所以基本上,如果您创建一个条件 DAG 触发器,那么它应该可以解决问题。

希望对您有所帮助。

您的拼图似乎非常适合使用 Cloud Tasks。在高层次上,我会想象您编写了一个 Cloud Functions 来订阅正在发布的主题。 Cloud Function 将包含您的处理逻辑:

  1. 10:00am 后收到,运行 立即工作。
  2. 在 10:00am 之前收到,使用 Cloud Tasks post 一项任务 运行 您在 10:00am 的工作。

...就是这样。