【发布时间】:2015-12-19 15:23:11
【问题描述】:
我正在尝试使用节点应用发送到 SQS 的消息。所以“push”动作由服务器 A 上的 Node App 执行,“listen”动作由服务器 B 上的 Laravel App 执行。
我的问题:我不知道如何格式化要与php artisan queue:work 一起使用的有效负载。
以前有没有人遇到过这种情况并找到了解决方案?
谢谢!
【问题讨论】:
我正在尝试使用节点应用发送到 SQS 的消息。所以“push”动作由服务器 A 上的 Node App 执行,“listen”动作由服务器 B 上的 Laravel App 执行。
我的问题:我不知道如何格式化要与php artisan queue:work 一起使用的有效负载。
以前有没有人遇到过这种情况并找到了解决方案?
谢谢!
【问题讨论】:
找到了!经过一些测试,我终于设法从队列中读取消息。
基本上,有效负载必须有一个 job 属性,其中包含负责执行工作的类,以及一个 data 属性,其中包含实际数据。比如:
var payload = {
job: 'App\\Jobs\\MyTestJob@handle',
data: {user: foo, email: bar@example.com}
};
然后payload会被编码成json字符串并发送给SQS。
在 Laravel 端,Job 类如下所示:
public function handle($job, $data){}
队列处理程序将自动解码并注入在 payload.job 中指定的方法的属性。如果没有指定方法,Laravel 将尝试运行 ::fire() 方法。
【讨论】: