简体   繁体   English

对于 Java,Cron 作业仅在 Google App Engine 中执行一次

[英]Cron Job only executes once in Google App Engine for Java

I want to set up a cron job that sends an email every 2 minutes.我想设置一个 cron 作业,每 2 分钟发送一次 email。 However, when I initiate the cron job, it sends an email right away and then never again.但是,当我启动 cron 作业时,它会立即发送 email,然后再也不会发送。 But, when I go to the Google Cloud Console and look at my cron jobs, it says it's running successfully, but I'm not receiving emails.但是,当我 go 到 Google Cloud Console 并查看我的 cron 作业时,它说它运行成功,但我没有收到电子邮件。

I followed this tutorial: https://rominirani.com/episode-9-using-the-cron-service-to-run-scheduled-tasks-8bc7dba91a77我遵循了本教程: https://rominirani.com/episode-9-using-the-cron-service-to-run-scheduled-tasks-8bc7dba91a77

web.xml file:

<servlet>
    <servlet-name>subscribe</servlet-name>
    <servlet-class>blogapp.CronServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>subscribe</servlet-name>
    <url-pattern>/subscribe</url-pattern>
</servlet-mapping>

cron.xml file:

<cronentries>
  <cron>
    <url>/subscribe</url>
    <description>Daily Digest from The Rambling Programmer</description>
    <!-- <schedule>every day 17:00</schedule> -->
    <schedule>every 2 minutes</schedule>
    <timezone>America/Chicago</timezone>
  </cron>
</cronentries>

CronServlet.java file:

public class CronServlet extends HttpServlet {

private static final Logger _logger = Logger.getLogger(CronServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
    try {
    _logger.info("Cron Job has been executed");
    /// other logic to send email
    /// sendEmail(email, subject, content);
    }

    resp.sendRedirect("/subscribe.jsp");
    }
    catch (Exception ex) {
        resp.getWriter().println("Error subscribing");
    }
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);

}

There's no errors popping up and one email successfully sends so I'm not sure why it's not running every two minutes like I wanted it to.没有弹出错误,并且一个 email 成功发送,所以我不确定为什么它没有像我想要的那样每两分钟运行一次。

Thank you!谢谢!

I found out it's because it wasn't calling sendEmail() for some reason!我发现这是因为出于某种原因它没有调用 sendEmail() !

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM