多个playframwork应用程序多次运行计划的任务

时间:2018-10-15 21:40:51

标签: playframework playframework-2.2 playframework-2.3

我的项目使用playframework,并且每5分钟运行一次计划任务。当只有一个应用程序时,它可以正常工作。

但是,当我使用nginx配置2个play应用程序时。这两个播放应用程序都运行预定的任务。

如何仅在这两个Play应用程序中运行一项预定任务?

1 个答案:

答案 0 :(得分:0)

我看到了针对该问题的三种解决方案:

  • 使用外部服务进行计划(如cron选项卡)。每5分钟,外部服务就会调用您应用程序的一个专用终结点,然后一个应用程序将运行任务

  • 使用外部数据库(例如sql数据库,zookeeper ...)来获得分布式锁,在该分布式锁中,只有一个应用程序可以在给定时间获得该锁。当另一个尝试获取锁来运行任务时,由于已获取了锁,因此该任务被中止。

  • 使用akka群集功能来创建分布式调度程序。为此,您可以使用分片功能,以便只有一个节点可以处理作业消息。

根据您已经在使用的内容,前两种解决方案可能更易于实现。使用Akka,您可能需要投入很多新知识来实现​​此目标。