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 協議》,轉載必須註明作者和本文連結