【问题标题】:Where do I put my Java code in Google Cloud Tasks我将 Java 代码放在 Google Cloud Tasks 的什么位置
【发布时间】:2019-01-03 23:05:29
【问题描述】:

我是 Google Cloud Tasks 的新手。

我指的是https://cloud.google.com/tasks/docs/quickstart-appengine

我已成功设置 Java 示例应用,创建了 App Engine 队列并将任务添加到 App Engine 队列。

但是,据我了解,该示例应用程序实际上什么也没做。如果我想让应用做一些有用的事情,我应该把我的代码放在哪里?

【问题讨论】:

    标签: google-cloud-platform


    【解决方案1】:

    按照 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2014-05-05
      • 1970-01-01
      • 2016-05-07
      • 2012-07-09
      相关资源
      最近更新 更多