我已经设置了一个Elastic Beanstalk服务器,即工作层。它有一个cron.yaml来每小时运行一个任务,如下所示:
version: 1
cron:
- name: "broadcast-users"
url: "/broadcast"
schedule: "0 * * * *"
我知道它可以通过SQS向工作队列发送消息然后被该路由接收 - 但我不知道该消息是什么样的。我希望能够轻松地测试cron作业,而无需等待预定的时间。
有没有人从SQS那里得到什么信息来启动这个cron工作? (或者我如何检查发送到SQS的消息的内容?)
谢谢!
答案 0 :(得分:2)
如果您要从AWS SQS控制台发送,请尝试此操作
在Message Body
标签中,添加elasticbeanstalk scheduled job
。
在Message Attributes
中,输入以下内容:
Name: beanstalk.sqsd.path
Type: String
Value: jobs/example-job <- Whatever the URL of your job is
Name: beanstalk.sqsd.scheduled_time
Type: String
Value: '2018-04-07T20:38:00-04:00' <- When you want it scheduled
请注意,对于beanstalk.sqsd.path值,如果我包含一个前导斜杠,我无法使其工作,例如: /jobs/example-job
导致了一个孤独的消息,而jobs/example-job
工作了。
在我的cron.yaml
我将网址指定为/jobs/example-job
,以防您想知道。
答案 1 :(得分:1)
您应该能够使用SQS控制台查看消息的内容。该消息可能最终会出现在死信队列中。
话虽如此,消息内容应如下所示:
{ "taskurl": "broadcast", "taskname": "broadcast-users" }
您还可以使用SQS控制台手动发送消息:
{ "taskurl" : "broadcast", "taskname" : "broadcast-users" }
),然后点击“发送邮件”。在您的控制器中,您可以查看X-Aws-Sqsd-Taskname
标头以确定调用了哪个任务。
答案 2 :(得分:0)
Amazon在其知识中心(here)中回答了这个问题。简而言之,您可以将SSH转换为工作程序,然后使用$ flutter --version
Flutter 1.22.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f30b7f4db9 (6 days ago) • 2020-10-08 10:06:30 -0700
Engine • revision 75bef9f6c8
Tools • Dart 2.10.1
通过其URL立即测试作业...
curl
...其中curl -H "Content-Type: application/json" -X POST http://localhost/<path>
是您要测试的作业的路径。您也可以使用<path>
选项传递参数:
-d
答案 3 :(得分:0)
转到AWS SQS gui(例如https://eu-central-1.console.aws.amazon.com/sqs/v2/home#/queues),然后选择您的队列。如果您不知道队列,请导航到EBS工作程序配置,并查看工作程序部分。当心工人队列URL ,然后选择URL的最后一部分。应该看起来像这样awseb-e-3j7sjaqxre-stack-AWSEBWorkerQueue-3WR7QFDPTDEH1
。在队列列表中搜索,选择并单击Send and receive messages
按钮。
在邮件正文文本区域中,放入elasticbeanstalk scheduled job
。
添加三个消息属性
Name: beanstalk.sqsd.path
Type: String
Custom Type: (empty)
Value: /jobs/example-job <- cron.url from your cron.yaml
Name: beanstalk.sqsd.task_name
Type: String
Custom Type: (empty)
Value: example-job <- cron.name from your cron.yaml
Name: beanstalk.sqsd.scheduled_time
Type: String
Custom Type: (empty)
Value: '2020-12-06T11:07:00+01:00' <- It did not work without this entry
发送消息!
我不知道为什么,但是没有beanstalk.sqsd.scheduled_time
属性,这项工作就没有开始。即使忽略属性值!这项工作立即开始。