使用java Google App Engine(GAE)自动运行任务队列

时间:2014-06-01 16:16:20

标签: java google-app-engine scheduled-tasks task task-queue

我想让GAE任务队列中的任务开始。我从Task Queue Java on GAE开始逐步执​​行配置,但是当我点击(例如)我的网站上的链接(调用启动任务的Servlet)时,它只将任务放入队列中(如我可以在我的AppEngine控制台上看到“任务队列链接”,它永远不会启动。仅当我单击右侧按钮“立即运行”(在“操作”列下方)时,它才会成功启动。

那么,有没有人知道如何让它自动启动(无需转到AppEngine控制台并每次点击'立即运行')?

非常感谢

[编辑]添加代码:

[HTML网页]:

<a href="/tasks/callTaskServlet">Call Task Servlet</a>

[CallTask​​Servlet.java]:

public class CallTaskServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        Queue queue = QueueFactory.getDefaultQueue();
        queue.add(TaskOptions.Builder.withUrl("/tasks/taskServlet").param("act", "refresh").retryOptions(RetryOptions.Builder.withTaskRetryLimit(1)));

    }

}

[TaskServlet.java]:

public class TaskServlet extends HttpServlet{

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String action = req.getParameter("act");
        LOGGER.warning(action);

        //Doing my stuff here…
    }

}

[web.xml中]:

<servlet>
    <servlet-name>Task</servlet-name>
    <servlet-class>servlet.TaskServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Task</servlet-name>
    <url-pattern>/tasks/taskServlet</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>CallTask</servlet-name>
    <servlet-class>servlet.CallTaskServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CallTask</servlet-name>
    <url-pattern>/tasks/callTaskServlet</url-pattern>
</servlet-mapping>

[任务队列AppEngine]: Task Queues AppEngine

[Log GAE(/ tasks / taskServlet not run)] Log GAE

我错过了什么吗?我希望这已经足够了。

1 个答案:

答案 0 :(得分:1)

您的队列已暂停。点击&#34;恢复队列&#34;它将按预期工作。

请注意,队列永远不会自行恢复。