消息队列或调度程序

时间:2010-04-23 14:30:49

标签: java message-queue quartz-scheduler

我目前正在使用Quartz Scheduler进行异步任务,例如发生异常时发送电子邮件,从Web界面发送电子邮件或定期分析流量。

我应该使用邮件队列发送电子邮件吗?这样做是否更有效率或更正确?调度程序方法运行正常。

如果我使用队列且电子邮件无法发送,队列是否可以稍后重试发送电子邮件?对于需要立即执行的任务,队列方法看起来比调度程序更简单,但对于调度程序任务,调度程序仍然是,除非队列中有比我所知的更多。

我还没有使用过JMS,所以这就是我读过的。

沃尔特

3 个答案:

答案 0 :(得分:3)

队列对于发送电子邮件等内容来说是更自然的选择。石英可以用鞋角,但是当你重试时它不是天生的。调度程序最适合于名称所暗示的 - 应该定期发生的任务。

答案 1 :(得分:2)

它们确实不同,它取决于您要发送电子邮件的目的和频率。 调度程序生成基于时间的事件,然后运行一些代码来发送电子邮件。 队列无法触发事件,它需要从某处发出消息,然后MessageListener发送电子邮件。

要回答您的问题,如果

,队列是发送电子邮件的好工具
  1. 需要重新打开消息 如果操作失败,队列 即使SMTP不知道是否 电子邮件到达目的地。
  2. 某些触发器可以发送消息 队列。
  3. 调度程序可以以特定间隔运行一些Java代码,从而生成时间事件。 如果您想定期发送电子邮件,那么调度程序就是您的选择。

    如果您使用调度程序,那么您应该让调度程序在队列中放置消息。 如果没有,那么你需要让其他一些触发器在队列上放置一条消息。

答案 2 :(得分:1)

我同意Tom,这种异步通信最好通过队列完成。其作用类似于遵循观察者模式的发布订阅者模型。