我正在使用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;
}
据我所知,每个用户请求都会在服务器端触发线程的创建。返回响应后,线程终止。因此,如果我必须在一个月内或在特定的日期和时间向客户发送电子邮件,则必须以某种方式进行安排。我考虑过将所需的信息存储在数据库中,并运行诸如cron
或at
之类的unix实用程序来查询相应的表并在需要时发送电子邮件。不确定这是否是执行此类任务的最佳方法。通常如何进行?有人告诉我,将来可能还会有其他通知渠道,例如短信,whatsapp,viber等。
答案 0 :(得分:0)
我过去使用的一个选项是Quartz Framework。
例如,您定义一个作业:
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();