我希望使用quartz来安排电子邮件,但我不确定采取哪种方法:
创建新作业并在计划电子邮件时触发OR
创建单个作业,并在每次安排电子邮件时创建新的触发器
我需要以任何方式传递消息/收件人等,而且我不确定创建大量工作是否会开始增加大量内存开销,因为很可能会安排数千封电子邮件.
更新:这些电子邮件将由用户安排,而不是我 - 所以我将在运行时以编程方式添加这些电子邮件,它们不会在任何特定时间安排.
Quartz旨在处理成千上万的触发器.此处可扩展性的主要限制是JobStore中可用的空间.支持合理数据库的JDBCJobStore应该能够处理数十万个触发器.
如果可以通过触发器的作业数据映射参数化单个作业,则为每个电子邮件创建一个作业和一个触发器.Quartz定期轮询作业存储以查找准备触发的触发器.Quartz旨在安全地处理来自此查询的任意大的结果集.
重要的是 - 这与Quartz本身无关 - 就是你有足够的带宽来执行峰值负载.如果用户倾向于将邮件安排在丛中,则需要确保拥有计算资源才能收到电子邮件.这将包括网络带宽,处理以及配置为利用可用资源的足够工作线程.
请注意,如果Quartz在执行作业时落后太多,您可以配置Quartz应该对触发器执行的操作.你可以继续尝试,跳过触发器等.