Вопрос

Я смотрю на новый API очереди задач Google App Engine для Java, и мне трудно связать его с моим приложением GWT.Если бы я хотел использовать очередь задач для выполнения асинхронной обработки, как мне это сделать с помощью GWT?

Насколько я понимаю, мне нужно будет отправить запрос к серверу, который затем выполнит отправку в API очереди задач.Если я правильно понимаю очереди задач, мне придется создать еще один сервлет, который будет выполнять обработку из очереди задач (будет рабочим).

Я ищу 2 вещи:

  1. Будет ли работник сервлетом (т.простирается HttpServlet)?Если нет, может ли кто-нибудь привести мне пример «рабочего»?
  2. Действительно ли имеет смысл использовать очередь задач, если я просто хочу отправить асинхронный ответ для немедленного выполнения?Кажется, встроенного механизма RPC GWT достаточно.
Это было полезно?

Решение

Да, рабочий будет сервлетом, который может обрабатывать запрос с параметрами POST.Если вам нужен асинхронный вызов с точки зрения клиента, тогда достаточно RPC (с точки зрения сервера он все еще синхронен).Если вы хотите выполнять «отложенные» задания, которые не взаимодействуют с вашим клиентом, вы можете использовать очередь задач.

Другие советы

Отложенный.Отложенный

Есть ли планы по использованию deferred.defer в Java?

import static com.google.appengine.api.labs.taskqueue.TaskOptions.Builder.taskName;

import java.io.IOException;

import javax.servlet.ServletException;

import com.newatlanta.appengine.taskqueue.Deferred;
import com.newatlanta.appengine.taskqueue.Deferred.Deferrable;

@SuppressWarnings("serial")
public class SampleTask implements Deferrable {

    private String arg1;
    private String arg2;

    public SampleTask() {
    }

    public SampleTask(String arg1, String arg2) {
        // save information to use later
        this.arg1 = arg1;
        this.arg2 = arg2;
    }

    @Override
    public void doTask() throws ServletException, IOException {
        // TODO do work here

        // this is how you 'schedule' a task
        // doing this here is recursive;
        // you most likely want to call this from
        // a server rpc endpoint
        SampleTask task = new SampleTask("arg1", "arg2");
        Deferred.defer(task, "queue-name", taskName("task-name"));
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top