两个项目用消息队列通信
1.需求
项目A发送任务到队列,项目B消费任务执行业务操作
2.注意点
1.两个项目需要同一个queue的connection
2.任务生产者和任务订阅者配置同一个队列名称{queue}
3.任务生产者和任务订阅者有一个相同的job,类名和配置一样,不一样的是handle里面的内容。
4.任务订阅者监听的时候要指定参数–queue={queue}
5.为了减少代码耦合度,消息使用数组而不要使用具体对象
3. 项目A
3.1 OrderJob
<?php
namespace App\Jobs;
class NewOrderJob extends Job
{
public $queue = 'new_order';
public $data;
public function __construct(array $data)
{
$this->data = $data;
}
public function handle()
{
echo "不会执行";
}
}
3.2 发布任务
dispatch(new NewOrderJob(["a" => "b"]));
4 项目B
<?php
namespace App\Jobs;
class NewOrderJob extends Job
{
public $queue = 'new_order';
public $data;
public function __construct(array $data)
{
$this->data = $data;
}
public function handle()
{
dump($this->data);
echo "项目B执行NewOrderJob";
}
}
4.1 监听任务
php artisan queue:work --queue=new_order
#...
#项目B执行NewOrderJob[2020-03-15 17:28:37]
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: