【发布时间】:2018-10-15 21:40:51
【问题描述】:
我的项目使用 playframework 并每 5 分钟运行一次计划任务。只有一个应用程序时,它可以正常工作。
但是,当我使用 nginx 配置 2 个播放应用程序时。两个 2 播放应用程序都运行计划任务。
如何在这2个play应用中只运行一个定时任务?
【问题讨论】:
标签: playframework playframework-2.2 playframework-2.3
我的项目使用 playframework 并每 5 分钟运行一次计划任务。只有一个应用程序时,它可以正常工作。
但是,当我使用 nginx 配置 2 个播放应用程序时。两个 2 播放应用程序都运行计划任务。
如何在这2个play应用中只运行一个定时任务?
【问题讨论】:
标签: playframework playframework-2.2 playframework-2.3
我看到了这个问题的三个解决方案:
使用外部服务进行调度(如 cron 选项卡)。每 5 分钟,外部服务调用您应用程序的私有端点,一个应用程序将运行该任务
使用外部数据库(如 sql 数据库、zookeeper...)拥有一个分布式锁,其中只有一个应用程序可以在给定时间获取锁。当另一个试图获取锁来运行任务时,任务被中止,因为锁已经被占用了。
使用 akka 集群功能创建分布式调度程序。为此,您可以使用分片功能,这样只有一个节点会处理作业消息。
根据您已经使用的内容,前两种解决方案可能更易于实施。使用 akka,您可能需要潜入很多新事物才能实现这一目标。
【讨论】: