Планировщик Google Cloud для запуска задачи в определенное время каждый день, но только при получении сообщения Pub / Sub

Можно ли добиться взаимодействия между планировщиком и издателем / подпиской в ​​Google Cloud, чтобы задача запускалась через определенное время каждый день, но только если сообщение приходит?

ОБНОВЛЕНО:

Примером может быть задача, запланированная на 10:00, ожидание сообщения (предварительное условие).

  1. В 10:00 сообщение не пришло. Работа не запускается. Сообщение приходит в 11:00. Работа запущена. (Затем он может отправить сообщение, чтобы начать выполнение задачи)
  2. В 09:00 приходит сообщение. Задание не выполнено. В 10:00 работа запускается.
  3. Сообщение никогда не приходит. Работа никогда не выполняется.

comment
Да, вы можете создать простую облачную функцию, которая подписывается на тему Pub / Sub. Затем создайте тему Pub / Sub, чтобы активировать эту функцию. После этого создайте задание Cloud Scheduler, которое запускает триггер Pub / Sub. Наконец, запустите задание Cloud Scheduler. Вы можете добавить любую логику в свою облачную функцию. У вас есть хорошее руководство здесь   -  person sllopis    schedule 06.12.2019
comment
@sllopis, на самом деле я прошу немного более сложный случай. Вы описываете задание планировщика - ›отправка сообщения -› функция запуска. Я ищу: msg - ›включение задания планировщика -› запуск функции по истечении указанного времени. Я дополню вопрос примером   -  person Galya    schedule 06.12.2019


Ответы (2)


Кажется, ваша головоломка отлично подходит для использования облачных задач. На высоком уровне я могу представить, что вы пишете облачную функцию, которая подписывается на тему, по которой публикуется. Облачная функция будет содержать вашу логику обработки:

  1. Получено после 10:00, немедленно приступайте к работе.
  2. Полученные до 10:00, используйте Cloud Tasks, чтобы опубликовать задачу для запуска вашей работы в 10:00.

... вот и все.

person Kolban    schedule 06.12.2019

Рекомендуемая практика Google - использовать Google Cloud Composer для таких задач.

Вы можете использовать облачные композиторы для различных случаев использования, включая пакетную обработку, обработку в реальном времени / потоковую обработку и обработку стиля задания / запланированной задачи cron.

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

Под капотом Composer запускает Apache Airflow через управляемый кластер GKE. Таким образом, это не только инструмент оркестровки, но также дает возможность запускать код с использованием DAG (что по сути является облачной функцией). Взгляните на несколько примеров триггеров DAG ниже:

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

По сути, если вы создаете условный триггер DAG, он должен помочь.

Надеюсь это поможет.

person Parth Mehta    schedule 06.12.2019
comment
Компоновщик выглядит многообещающе, хотя мне кажется, что он больше похож на Orchestrator самой облачной среды. Не могли бы вы добавить некоторые подробности, как мой пример может быть реализован с его помощью? - person Galya; 06.12.2019
comment
добавлен контекст и ссылка с примерами в исходный комментарий. - person Parth Mehta; 06.12.2019