创建Google PULL队列有什么问题?

时间:2018-10-27 19:21:33

标签: java google-app-engine google-cloud-platform

我是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 :(得分:1)

queue.xml是不够的。

在组装.withMethod(TaskOptions.Method.PULL)的阶段,应将TaskOptions.Builder添加到TaskOptions