电子邮件在单节点服务器中触发了一次。但是,由于多个节点服务器正在运行,因此它正在集群环境中复制多个电子邮件。但是需要在群集环境中获取单个电子邮件。在Spring应用程序中如何处理。
@Service
public class MailController {
@Scheduled(cron = "0 20 20 * * *")
@Transactional("myTraxManger")
public void sendmail() {
System.out.println("Sending maill to User");
}
}
答案 0 :(得分:1)
我建议使用诸如Spring Cloud或Hazelcast之类的框架来管理集群状态,然后您可以决定仅在其中一个节点(例如具有Leadership选举的Leader)上运行计划的任务。 / p>
答案 1 :(得分:0)
我建议使用ActiveMQ或kafka之类的排队解决方案,并且所有群集都将把消息放入队列,并使邮件发件人进程异步从该队列中获取并发送电子邮件。