我正在开发一个Java / Spring应用程序。应用程序按需颁发许可证。每个许可证都有一个有效期。许可证可以由管理员续签。我想发送电子邮件通知或执行一些操作90,45,30,x,y,z编号。在执照到期前的几天。电子邮件通知要在这些天数之前发出(不要求准确到分钟)是一项合同义务,必须在许可证续签之前发送。
我正在考虑以下方法来实现这一点。
x日之后到期的许可证,并发送电子邮件通知。然而,我担心的是没有运行在特定的一天,如应用程序维护等。例如,45天的电子邮件可能会错过,因为工作没有运行在第45天。似乎容易出错。为了避免这种情况,在另一个表中针对每个许可证设置一个90、45、30、x、y、z列,但是对于第二次更新,这将是一个问题。为了避免这种情况,请跟踪调度程序运行的天数,因此如果调度程序没有在任何一天运行或未成功完成,请手动重新运行它。这是一个运行多个实例的无状态web应用程序。我应该将这类操作作为单独的批处理作业来实现,还是在web应用程序中作为调度程序来实现?
会欣赏任何关于资源的想法或指点。
发布于 2016-10-29 14:53:06
我们已经用RabbitMQ延迟消息实现了类似的行为。
您必须确保的唯一工作是消息路由,因为如果不能在预定时间路由延迟消息,它将被丢弃(按照AMQP)。
除此之外,实现非常简单,您可以设置发布者和消费者对,就像使用常规RabbitMQ消息时一样。
就你而言,你会:
发布于 2016-09-29 12:23:33
建议你看看Quartz调度器,而不是浪费时间重新发明轮子。我在它的.Net版本上取得了巨大的成功。http://www.quartz-scheduler.org适用于Java版本。
https://softwareengineering.stackexchange.com/questions/332016
复制相似问题