Что не так с моим созданием очереди Google PULL? - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в Google App Engine, так что вы не могли бы мне кое-что прояснить?

Я создаю новую очередь PULL, это моя queue.xml

<queue-entries>
    <queue>
        <name>app-metered-queue</name>
        <mode>pull</mode>
    </queue>
</queue-entries>

В моем сервисе я создаю экземпляр Queue со следующей строкой кода

private final Queue appMeteredQueue = QueueFactory.getQueue("app-metered-queue");

После того, как я добавлю в него некоторые данные:

final List<TaskOptions> taskOptions = new ArrayList<>();
for (final Map.Entry<Long, Map<String, Map<String, Long>>> entry : bundledData.entrySet()) {
       taskOptions.add(TaskOptions.Builder
               .withPayload(mapper.writeValueAsString(entry.getValue()))
               .tag(String.valueOf(entry.getKey()))
       );
   }
appMeteredQueue.add(taskOptions);

но, к сожалению, исключение выдается в .add() method:

java.lang.IllegalArgumentException: Only PULL tasks can have a tag.
    at com.google.appengine.api.taskqueue.QueueImpl.fillAddRequest(QueueImpl.java:335)

Не могли бы вы уточнить, что я делаю не так?

1 Ответ

0 голосов
/ 28 октября 2018

queue.xml недостаточно.

Вы должны добавить .withMethod(TaskOptions.Method.PULL) к TaskOptions.Builder на сцене при сборке TaskOptions.

...