in appengine-java8/taskqueues-pull/src/main/java/com/example/taskqueue/TaskqueueServlet.java [54:119]
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
if (req.getParameter("addTask") != null) {
String content = req.getParameter("content");
String output =
String.format(
"Adding %d Tasks to the Task Queue with a payload of '%s'",
numberOfTasksToAdd, content.toString());
log.info(output.toString());
// Add Tasks to Task Queue
// [START get_queue]
Queue q = QueueFactory.getQueue("pull-queue");
// [END get_queue]
if (!useTaggedTasks) {
for (int i = 0; i < numberOfTasksToAdd; i++) {
// [START add_task]
q.add(
TaskOptions.Builder.withMethod(TaskOptions.Method.PULL).payload(content.toString()));
// [END add_task]
}
} else {
for (int i = 0; i < numberOfTasksToAdd; i++) {
// [START add_task_w_tag]
q.add(
TaskOptions.Builder.withMethod(TaskOptions.Method.PULL)
.payload(content.toString())
.tag("process".getBytes()));
// [END add_task_w_tag]
}
}
try {
message = "Added " + numberOfTasksToAdd + " tasks to the task queue.";
req.setAttribute("message", message);
req.getRequestDispatcher("taskqueues-pull.jsp").forward(req, resp);
} catch (ServletException e) {
throw new ServletException("ServletException error: ", e);
}
} else {
if (req.getParameter("leaseTask") != null) {
output = String.format("Pulling %d Tasks from the Task Queue", numberOfTasksToLease);
log.info(output.toString());
// Pull tasks from the Task Queue and process them
Queue q = QueueFactory.getQueue("pull-queue");
if (!useTaggedTasks) {
// [START lease_tasks]
List<TaskHandle> tasks = q.leaseTasks(3600, TimeUnit.SECONDS, numberOfTasksToLease);
// [END lease_tasks]
message = processTasks(tasks, q);
} else {
// [START lease_tasks_by_tag]
// Lease only tasks tagged with "process"
List<TaskHandle> tasks =
q.leaseTasksByTag(3600, TimeUnit.SECONDS, numberOfTasksToLease, "process");
// You can also specify a tag to lease via LeaseOptions passed to leaseTasks.
// [END lease_tasks_by_tag]
message = processTasks(tasks, q);
}
req.setAttribute("message", message);
req.getRequestDispatcher("taskqueues-pull.jsp").forward(req, resp);
} else {
resp.sendRedirect("/");
}
}
}