如何在Elastic Beanstalk服务器上模拟发送周期性任务?

Pam*_*Fox 5 amazon-ec2 amazon-sqs amazon-web-services amazon-elastic-beanstalk

我已经设置了 Elastic Beanstalk 服务器、工作层。它有一个 cron.yaml 每小时运行一个任务,如下所示:

version: 1
cron:
 - name: "broadcast-users"
   url: "/broadcast"
   schedule: "0 * * * *"
Run Code Online (Sandbox Code Playgroud)

我知道它是通过 SQS 向工作队列发送消息来工作的,然后该消息会被该路由接收 - 但我不知道该消息是什么样的。我希望能够轻松地测试 cron 作业,而无需等待预定时间的到来。

有人知道 SQS 启动这个 cron 作业的消息是什么样子吗?(或者我如何检查发送到 SQS 的消息的内容?)

谢谢!

tre*_*ker 5

如果您从 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
Run Code Online (Sandbox Code Playgroud)

请注意,对于 beanstalk.sqsd.path 值,如果我包含前导斜杠,我将无法使其工作,例如在工作/jobs/example-job时导致队列中出现一条孤独的消息jobs/example-job

在我的文章中cron.yaml,我将 URL 指定为/jobs/example-job,以防您想知道。


Bri*_*ian 1

您应该能够使用 SQS 控制台查看消息的内容。该消息可能最终会进入死信队列。

话虽这么说,消息内容应该如下所示:

{ "taskurl": "broadcast", "taskname": "broadcast-users" }
Run Code Online (Sandbox Code Playgroud)

您还可以使用SQS控制台手动发送消息:

  • 选择适当的队列。
  • 从“队列操作”下拉列表中选择“发送消息”。
  • 输入 JSON 消息正文(例如{ "taskurl" : "broadcast", "taskname" : "broadcast-users" }),然后单击“发送消息”。

在控制器中,您可以查看X-Aws-Sqsd-Taskname标头以确定调用了哪个任务。