REST服务和计划的消息发送

时间:2018-11-25 12:55:59

标签: java rest email scheduled-tasks

我正在使用Jersey作为JAX-RS实现的客户端服务器应用程序。我使用下面的代码来处理用户请求。

@Path("service")
public class SomeRestService {

    @POST
    @Path("good")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    public Resp getCardRequest(Req request) {
        String result = "Request has been received: " + request;
        Response.status(201).entity(result).build();

                // Here it becomes clear that the service will have to send an email to someone@mail.com with some content on 17.01.2019 at 14:00 for example
                ...

             Resp response = ...

       return response;
    }

据我所知,每个用户请求都会在服务器端触发线程的创建。返回响应后,线程终止。因此,如果我必须在一个月内或在特定的日期和时间向客户发送电子邮件,则必须以某种方式进行安排。我考虑过将所需的信息存储在数据库中,并运行诸如cronat之类的unix实用程序来查询相应的表并在需要时发送电子邮件。不确定这是否是执行此类任务的最佳方法。通常如何进行?有人告诉我,将来可能还会有其他通知渠道,例如短信,whatsapp,viber等。

1 个答案:

答案 0 :(得分:0)

我过去使用的一个选项是Quartz Framework。

我会读CronTrigger Tutorial

例如,您定义一个作业:

public class SimpleJob implements Job {
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        // send email code
    }
}

您编写代码以在每个星期五中午或每个工作日上午9:30触发它:

CronTrigger trigger = TriggerBuilder.newTrigger()
  .withIdentity("trigger3", "group1")
  .withSchedule(CronScheduleBuilder.cronSchedule("0 0/2 8-17 * * ?"))
  .forJob("myJob", "group1")
  .build();