繁体   English   中英

如何使用Elastic Beanstalk和Java使用cron作业?

[英]How do you use cron jobs using Elastic Beanstalk and Java?

我想运行cron作业并使用相同的代码库。 我找到了一些解决方案,但它们似乎并不理想。 例如,使用Heroku,您可以添加Scheduler元素并填写要在网页中运行的命令。

  • http://blog.rotaready.com/scheduled-tasks-elastic-beanstalk-cron/
    • 对于负载平衡的实例,这似乎过于复杂。
    • 它在Node中使用了require('async') ,但是等效于Java Spring Boot?
  • https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
    • 似乎没有任何安全性。 网络中的任何人都可以访问/ path来执行POST并执行作业,从而导致拒绝服务攻击。
    • 它提到cron.yaml ,因为该应用程序是通过WAR / ZIP文件部署到Tomcat实例(Spring Boot)的,所以没有意义。
    • 它提到了我们不使用的Amazon DynamoDB。 我们使用MySQL。
    • 它没有指定负载均衡器连接耗尽超时对于这些作业(10s)是否有效。
    • 它提到“环境管理控制台的“配置”页面上的“工作程序配置卡””,但在“配置”页面下没有工作程序配置卡。
  • 在Elastic Beanstalk中运行cron作业
    • 对于Python / Django-使用cron.yaml
  • 我想到只是有一个专用的EC2实例,但是如何在其中部署最新的代码更改?

这也可能属于SoftwareEngineering.StackExchange。

使用其他AWS系统有一种简便的方法。

您可以使用CloudWatch设置计划的事件( https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html )。 您可以设置规则以按预定时间表设置事件。

然后,您至少有两个选择:

  • 将事件设置为发布SNS消息,并使用该SNS调用服务器上的Web挂钩。 有关如何执行此操作的许多示例,但是您必须确保检查签名以确保从已签名的SNS调用Web API。 但这将使用公共API,但您可能不满意。

  • 设置事件以发布SQS消息。 然后设置一个弹性beantalk工作者来处理SQS消息,或者只在主服务器上运行后台脚本,该服务器基本上是在无限循环轮询SQS上进行的工作。

不确定您对这些系统有多熟悉,因此不确定是否可以清楚我在说什么,但是无法给出详细的解决方案,因此希望这足以为您提供想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM