如何使用spring在集群环境中运行调度器

如何使用spring在集群环境中运行调度器,spring,spring-mvc,Spring,Spring Mvc,电子邮件在单节点服务器中触发一次。但它在集群环境中复制了多个电子邮件,因为多个节点服务器正在运行。但需要在集群环境中获取单个电子邮件。如何在spring应用程序中处理这个问题 @Service public class MailController { @Scheduled(cron = "0 20 20 * * *") @Transactional("myTraxManger") public void sendmail() { System.out.

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

@Service
public class MailController {

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

}

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

我建议使用诸如或之类的框架来管理群集状态,然后您可以决定只在其中一个节点上运行计划任务,如领导选举的领导。

谢谢您宝贵的回复,但我想运行一次计划程序,但此计划程序运行多次。sendMail正在处理从备份服务器获取数据的过程另外,请检查Shedlock或Quartz以了解群集环境。它们使用起来很简单。谢谢你。。。我已经实现了Shedlock。它在集群环境中运行良好。很高兴听到它的工作: