首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现过期项的通知?

问如何实现过期项的通知?
EN

Software Engineering用户
提问于 2016-09-25 22:28:49
回答 2查看 2K关注 0票数 1

我正在开发一个Java / Spring应用程序。应用程序按需颁发许可证。每个许可证都有一个有效期。许可证可以由管理员续签。我想发送电子邮件通知或执行一些操作90,45,30,x,y,z编号。在执照到期前的几天。电子邮件通知要在这些天数之前发出(不要求准确到分钟)是一项合同义务,必须在许可证续签之前发送。

我正在考虑以下方法来实现这一点。

  • 实现一个Scheduler,它每天运行一次,检查当前+ x日之后到期的许可证,并发送电子邮件通知。然而,我担心的是没有运行在特定的一天,如应用程序维护等。例如,45天的电子邮件可能会错过,因为工作没有运行在第45天。似乎容易出错。为了避免这种情况,在另一个表中针对每个许可证设置一个90、45、30、x、y、z列,但是对于第二次更新,这将是一个问题。为了避免这种情况,请跟踪调度程序运行的天数,因此如果调度程序没有在任何一天运行或未成功完成,请手动重新运行它。

这是一个运行多个实例的无状态web应用程序。我应该将这类操作作为单独的批处理作业来实现,还是在web应用程序中作为调度程序来实现?

会欣赏任何关于资源的想法或指点。

EN

回答 2

Software Engineering用户

发布于 2016-10-29 14:53:06

我们已经用RabbitMQ延迟消息实现了类似的行为。

您必须确保的唯一工作是消息路由,因为如果不能在预定时间路由延迟消息,它将被丢弃(按照AMQP)。

除此之外,实现非常简单,您可以设置发布者和消费者对,就像使用常规RabbitMQ消息时一样。

就你而言,你会:

  1. 取物品的到期日,
  2. 减去就该特定项目发出通知的天数,
  3. 将减去的日期从步骤2转换为时间戳,
  4. 从步骤3的时间戳中减去当前日期的时间戳,
  5. 将步骤4中的时间戳用作延迟的秒数。
票数 1
EN

Software Engineering用户

发布于 2016-09-29 12:23:33

建议你看看Quartz调度器,而不是浪费时间重新发明轮子。我在它的.Net版本上取得了巨大的成功。http://www.quartz-scheduler.org适用于Java版本。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/332016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档