如何使用Spring在集群环境中运行调度程序

时间:2018-10-18 11:05:22

标签: spring spring-mvc

电子邮件在单节点服务器中触发了一次。但是,由于多个节点服务器正在运行,因此它正在集群环境中复制多个电子邮件。但是需要在群集环境中获取单个电子邮件。在Spring应用程序中如何处理。

@Service
public class MailController {

    @Scheduled(cron = "0 20 20 * * *")
    @Transactional("myTraxManger")
    public void sendmail() {
        System.out.println("Sending maill to User");
    }

}

2 个答案:

答案 0 :(得分:1)

我建议使用诸如Spring CloudHazelcast之类的框架来管理集群状态,然后您可以决定仅在其中一个节点(例如具有Leadership选举的Leader)上运行计划的任务。 / p>

答案 1 :(得分:0)

我建议使用ActiveMQ或kafka之类的排队解决方案,并且所有群集都将把消息放入队列,并使邮件发件人进程异步从该队列中获取并发送电子邮件。