Pull Queue leaseTasks не возвращает никаких TaskHandles

Я пытаюсь использовать Pull Queue в Google AppEngine, вот настройка

  • Пользователи будут создавать задачи через мои приложения REST API
    • Затем добавляет задачу в "TEST_QUEUE"(режим: PULL)
  • Работа Cron проверит QueueStatistics чтобы увидеть, есть ли какие-либо задачи, ожидающие выполнения, и подсчитать количество рабочих для запуска и отправить рабочую конфигурацию (аренда, количество задач для выборки и т. д.) в очередь отправки
  • В обработчике Push-очереди я делаю некоторые проверки работоспособности и выдаю leaseTasks Вызов API Java
    • Здесь проблема, этот вызов всегда возвращает пустой массив TaskHandles.

Я тестирую это на инфраструктуре AppEngine, и только один обработчик пытается leaseTasks

Вот как я добавляю задачу

Queue queue = QueueFactory.getQueue("TEST_QUEUE");
TaskOptions options = TaskOptions.Builder.withMethod(TaskOptions.Method.PULL)
                                 .payload("Test");

Вот как я пытаюсь получить задачи

Queue queue = QueueFactory.getQueue("TEST_QUEUE");
Logger.info("Task Count (Before): " + queue.fetchStatistics().getNumTasks());
List<TaskHandle> handles = queue.leaseTasks(300, TimeUnit.SECONDS, 100);
Logger.info("Task Count (After): " + queue.fetchStatistics().getNumTasks());
Logger.info("Handles: " + handles);

У меня есть 3 задачи в "TEST_QUEUE" (это также подтверждено в консоли администратора)

Task Count (Before): 3
Task Count (After): 3
Handles: []

После этого задачи больше не существуют, когда я проверяю в консоли администратора. Мне интересно, видел ли это кто-то раньше или я что-то делаю не так? Пожалуйста посоветуй

1 ответ

Решение

Хорошо... после нескольких попыток проб и ошибок я нашел проблему

Следующее было моим queue.xml фрагмент очереди, упомянутой выше.

<queue>
    <name>TEST_QUEUE</name>
    <mode>pull</mode>
    <retry-parameters>
        <task-retry-limit>0</task-retry-limit>
    </retry-parameters>
</queue>

Проблема была исправлена ​​после <retry-parameters> был удален из приведенного фрагмента. Я пытался преобразовать эту очередь из очереди Push, поэтому я забыл удалить ее, поскольку в конфигурации очереди задач Java не упоминается, что этот параметр предназначен только для очереди Push.

Надеюсь, это поможет кому-то:)

Другие вопросы по тегам