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.
Надеюсь, это поможет кому-то:)