Где я могу разместить свой Java-код в облачных задачах Google? - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в облачных задачах Google.

Я имею в виду https://cloud.google.com/tasks/docs/quickstart-appengine.

Я успешно настроил пример приложения Java, создал очередь App Engine и добавил задачу в очередь App Engine.

ОднакоНасколько я понимаю, этот пример приложения на самом деле ничего не делает.Где я могу разместить свой код, если я хочу, чтобы приложение делало что-то полезное?

1 Ответ

0 голосов
/ 03 января 2019

После примера приложения Java ваш код должен быть помещен в TaskServlet.java.

Отправляемая вами полезная нагрузка будет приниматься обработчиком, где будет фрагмент кода, который вы хотите выполнить.Вы можете использовать эту полезную нагрузку для выполнения вашего кода.

Вот как выглядит мой код:

@WebServlet(
name = "Tasks",
description = "Create Cloud Task",
urlPatterns = "/tasks/create" //Relative path to this handler
)
public class TaskServlet extends HttpServlet {
  private static Logger log = Logger.getLogger(TaskServlet.class.getName());

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws 
    IOException {
    log.info("Received task request: " + req.getServletPath());
    String body = req.getReader()
        .lines()
        .reduce("", (accumulator, actual) -> accumulator + actual);

    if (!body.isEmpty()) {
      log.info("Request payload: " + body);
      String output = String.format("Received task with payload %s", body);
      resp.getOutputStream().write(output.getBytes());
      log.info("Sending response: " + output);

      //For instance, something like...
      myFunction(body); //body being the payload

      resp.setStatus(HttpServletResponse.SC_OK);
    } else {
      log.warning("Null payload received in request to " + req.getServletPath());
    }
  }

  private void myFunction(String str){
    //Your code here
  }

}

В пределах CreateTask.java посмотрите, как задан относительный путь к обработчику:

// Construct the task body.
  Task.Builder taskBuilder = Task
      .newBuilder()
      .setAppEngineHttpRequest(AppEngineHttpRequest.newBuilder()
          .setBody(ByteString.copyFrom(payload, Charset.defaultCharset()))
          .setRelativeUri("/tasks/create") //This will look for a handler with this relative path
          .setHttpMethod(HttpMethod.POST)
          .build());

Вы также можете создавать разные обработчики, задавая им разные относительные URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...