Обратный вызов завершения очереди задач

Я использую очередь задач Google Cloud для выполнения некоторых длительных задач. После того, как все задачи были выполнены, я хотел отправить какое-нибудь уведомление.

Я использую приведенный ниже код, чтобы получить количество ожидающих задач в моем потоке

Статистика QueueStatistics = taskQueue.fetchStatistics (); stats.getNumTasks ();

но здесь я постоянно проверяю значение, возвращаемое методом getNumTask (). Если он равен нулю, я уведомляю других. Есть ли доступный обратный вызов, который мог бы уведомить меня, когда все задачи моей очереди будут выполнены.

С уважением,


person Pavan Tiwari    schedule 07.10.2016    source источник
comment
Перезвонить? Задача может отправить сообщение электронной почты или использовать канал для отправки сообщений.   -  person voscausa    schedule 07.10.2016


Ответы (1)


Если одновременное выполнение задач не является обязательным для вашего приложения, вы можете настроить очередь с максимальным количеством одновременных запросов, равным 1, чтобы задачи выполнялись одна за другой:

<queue-entries>
  <queue>
    <name>my-queue</name>
    <rate>1/s</rate>
    <max-concurrent-requests>1</max-concurrent-requests>
  </queue>
</queue-entries>

Затем, после помещения всех задач в очередь, вы помещаете задачу уведомления в ту же очередь. Задача уведомления будет последней в очереди и будет выполнена после завершения всех задач.

Примечания: будьте осторожны с автоматическими повторными попытками, когда одна из ваших задач терпит неудачу. Это сделает задачу уведомления не последней в очереди. Возможно, вы сможете очистить очередь в случае сбоя, а затем повторить попытку.

person Hoai Dang    schedule 13.10.2016
comment
Это сводит на нет цель использования задач в большинстве случаев, которая заключается в использовании параллелизма для выполнения большой работы. - person prl900; 19.07.2021