我正在尝试在Google AppEngine上使用Pull Queue,这是设置
TEST_QUEUE
”(模式:PULL)QueueStatistics
以查看是否有任何待处理任务,并计算要启动的工作人员数量并将工作人员配置(租约,要获取的任务数等)推送到{{3 }} leaseTasks
Java API调用
我在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);
我在“TEST_QUEUE”中有3个任务(也是从管理控制台确认的)
Task Count (Before): 3
Task Count (After): 3
Handles: []
此后,当我在管理控制台中签入时,任务不再存在。我想知道是否有人在此之前看过这个或我做错了什么?请建议
答案 0 :(得分:0)
好的......经过几次试错尝试后,我发现了问题
以下是我上面提到的队列的queue.xml
摘要。
<queue>
<name>TEST_QUEUE</name>
<mode>pull</mode>
<retry-parameters>
<task-retry-limit>0</task-retry-limit>
</retry-parameters>
</queue>
从上面的代码段移除<retry-parameters>
后问题得以解决。我试图从推送队列转换此队列,所以我忽略了删除这个,因为Java Task Queue Configuration没有提到此参数仅适用于推送队列
希望这有助于某人:)