簡體   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