以下是使用案例:
我正在使用Java(带有Spring)
一旦用户(通过Web应用程序)确认订阅,我想在30分钟后准确发送电子邮件给他。
现在该怎么做?我需要一个消息代理吗?或者类似于ScheduledExecutorService的东西? 我需要某种类型的队列吗?
请给予建议。
您可以考虑使用Quartz Scheduler来解决这个问题。
另外,一种常见的策略是每隔30分钟左右批量发送所有待发邮件。使用Quartz也可以帮助实现这一点。
private Timer myTimer;
在主方法中
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
//your method
}
}, 0, 200);
发送邮件后,线程并不会立即结束。当您配置Quartz时,将自动创建一个新线程并在指定的间隔时间执行分配的任务,或者您也可以使用Timer类,这非常容易使用。
Timer timer = new Timer(); // Get timer
long delay = 30 * 60 * 1000; // 3o min delay
// Schedule the two timers to run with different delays.
timer.schedule(new MyTask(), 0, delay);
...................
class MyTask extends TimerTask {
public void run() {
// business logic
// send mail here
}
}