运行`PHP artisan queue:work --queue=wxtQueue`后异步事件没有被触发
我想在确认收货后再进行一些处理,我选择了异步事件,控制器里的received
是收货方法
//确认收货
public function received(Order $order, Request $request)
{
// 校验权限
$user = User::isNotExists();
$this->verifyPermission($user, $order);
// 判断订单的发货状态是否为已发货
if ($order->ship_status !== Order::SHIP_STATUS_DELIVERED) {
throw new ApiException(ApiErrDesc::ORDER_SHIP_STATUS_ERR);
}
// 更新发货状态为已收到
$order->update(['ship_status' => Order::SHIP_STATUS_RECEIVED]);
event(new OrderReceived($order));
return $this->jsonSuccessData();
}
OrderReceived.php文件
<?php
namespace App\Events;
use App\Models\Order;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class OrderReceived
{
use Dispatchable, InteractsWithSockets, SerializesModels;
protected $order;
public function __construct(Order $order)
{
\Log::info('$$$$$$$$$$$$$$$$$$$$$$$$$$');
$this->order = $order;
}
public function getOrder()
{
return $this->order;
}
}
OrderRebate.php文件
<?php
namespace App\Listeners;
use App\Events\OrderReceived;
use Illuminate\Contracts\Queue\ShouldQueue;
class OrderRebate implements ShouldQueue
{
/**
* 任务将被推送到的连接名称.
*
* @var string|null
*/
public $queue = 'wxtQueue';
public function __construct()
{
//
}
public function handle(OrderReceived $event)
{
\Log::info('######################');
}
}
EventServiceProvider.php文件
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
WxtUserLogin::class => [
RecordWxtUserLogin::class,
],
OrderPaid::class => [
UpdateProductSoldCount::class,
],
OrderReviewed::class => [
UpdateProductRating::class,
],
ShipMonitoring::class => [
ShipTracking::class,
],
OrderReviewed::class => [
OrderRebate::class
],
];
点击确认收货后,数据库订单状态改成了已收货
,但是队列处理器没有任务。
推荐文章: