时间: 2025年07月04日 00:21
任务: 检查并修复各个模块的队列任务类,确保它们正确继承 UCore\Queue\QueueJob
根据项目规范,所有队列任务类都应该继承 UCore\Queue\QueueJob 基类,而不是直接实现 Laravel 的 ShouldQueue 接口。本次任务对项目中的所有队列任务类进行了检查和修复。
implements ShouldQueue 改为 extends QueueJobparent::__construct() 传递任务参数handle() 方法改为 run() 方法,返回 bool 类型payload() 方法返回任务数据failed() 方法签名为接受 \Throwable 参数use Illuminate\Support\Facades\LogUCore\Queue\QueueJob所有修复的队列任务类现在都:
UCore\Queue\QueueJob 基类run() 和 payload() 方法app/Module/Game/Jobs/TestJob.phpapp/Module/Ulogic/Queues/SendAppMessageQueue.phpapp/Module/Test/Jobs/TestJob.phpapp/Module/Transfer/Jobs/RetryFailedOrderJob.phpapp/Module/Transfer/Jobs/SendCallbackJob.phpapp/Module/Transfer/Jobs/ProcessTransferOrderJob.phpapp/Module/Notification/Queues/SendNotificationQueue.phpapp/Module/GameItems/Jobs/TestJob.phpapp/Module/Dev/Queues/DevQueue.phpapp/Module/LCache/QueueJob.phpapp/Module/DelayQueue/Job/Job.phpapp/Module/Pet/Jobs/ProcessActiveSkillsJob.phpapp/Module/Farm/Jobs/CheckUserLandsAfterLoginJob.php在修复队列任务类的基础上,还创建了 UCore\Queue\ShouldQueue 队列事件基类,用于统一管理队列事件监听器。
LaravelShouldQueue + ShouldQueueInterfacehandle() 方法包含类似 QueueJob::handle 的逻辑handleEvent() 方法供子类实现具体事件处理逻辑UCore\Queue\ShouldQueueInterface.php - 队列事件监听器接口(只包含run方法)class CustomEventListener extends \UCore\Queue\ShouldQueue
{
public $queue = 'events';
public $tries = 5;
public function run(object $event): bool
{
// 检查事件过滤
if (!$this->shouldHandle($event)) {
$this->logInfo('事件被过滤,跳过处理', [
'event_class' => get_class($event)
]);
return true;
}
// 处理事件逻辑
$this->logInfo('处理自定义事件', [
'event_id' => $this->getEventId($event)
]);
// 具体业务逻辑
if ($event instanceof CustomEvent) {
$this->processCustomEvent($event);
}
return true;
}
protected function shouldHandle(object $event): bool
{
// 自定义过滤逻辑
return $event instanceof CustomEvent && $event->isValid();
}
protected function handleFailure(\Throwable $exception): void
{
// 自定义失败处理
$this->logError('事件处理失败,发送告警');
}
private function processCustomEvent(CustomEvent $event): void
{
// 具体的事件处理逻辑
}
}
handle(object $event) 方法run(object $event) 方法run() 方法中实现具体的事件处理逻辑本次任务成功完成了两个重要工作:
UCore\Queue\QueueJob 基类UCore\Queue\ShouldQueue 基类,为队列事件监听器提供统一的基础架构修复过程中保持了原有的业务逻辑,增强了错误处理能力,提高了代码的规范性和可维护性。现在项目拥有了完整的队列架构体系:
UCore\Queue\QueueJob - 队列任务基类UCore\Queue\ShouldQueue - 队列事件监听器基类UCore\Queue\ShouldQueueInterface - 队列事件监听器接口UCore\Queue\QueueJobInterface - 队列任务接口UCore\Queue\JobEvent - 队列事件处理器成功将 UrsReferralCreatedListener 迁移到新的 ShouldQueue 基类:
implements ShouldQueue 改为 extends ShouldQueueInteractsWithQueue traitrun(object $event): bool 方法shouldHandle() 方法检查事件类型handleFailure() 方法[handle] jon run UrsReferralCreatedListener : handle
[业务] URS推荐关系创建,更新推荐人达人等级
[完成] jon run UrsReferralCreatedListener : runend-true (555.19795ms)
UCore\Queue\Helper 中 bcmul() 函数依赖问题round() 函数替代,提高兼容性TestUrsReferralCreatedListenerCommand - 专用测试命令所有队列相关类现在都遵循统一的架构设计,为后续的开发和维护工作奠定了良好的基础。新架构已通过实际业务场景验证,运行稳定可靠。