@@ -392,7 +392,7 @@ php think queue:work --queue helloJobQueue
392392 - 任务数量较多
393393 - 性能要求较高
394394 - 任务的执行时间较短
395- - ** 消费者类中不存在死循环,或者 sleep() 等容易导致bug的逻辑**
395+ - 消费者类中不存在死循环,sleep() ,exit() ,die() 等容易导致bug的逻辑
396396
397397 listen命令的适用场景是:
398398
@@ -697,10 +697,9 @@ class MyQueueFailedLogger {
697697 ];
698698 var_export(json_encode($failedJobLog,true));
699699
700- // $jobObject->release(); //重发任务
701-
702- $jobObject->delete(); //删除任务
703- $jobObject->failed(); //通知消费者类任务执行失败
700+ // $jobObject->release(); //重发任务
701+ //$jobObject->delete(); //删除任务
702+ //$jobObject->failed(); //通知消费者类任务执行失败
704703
705704 return self::should_run_hook_callback;
706705 }
@@ -724,7 +723,8 @@ class MyQueueFailedLogger {
724723 * @param $jobData string|array|... //发布任务时传递的 jobData 数据
725724 */
726725public function failed($jobData){
727- // send_mail_to_somebody() ;
726+ send_mail_to_somebody() ;
727+
728728 print("Warning: Job failed after max retries. job data is :".var_export($data,true)."\n";
729729}
730730```
@@ -763,12 +763,12 @@ public function failed($jobData){
763763 ``` php
764764 [
765765 'job' => 'application\\index\\job\\Hello' , // jobHandlerClassName,消费者类的类名
766- 'data' => [ // 生产者传入的业务数据
766+ 'data' => [ // 生产者传入的业务数据
767767 'time' => '2017-02-18 16:20:10',
768768 'data' => 'I have 648 apples'
769769 ],
770- 'id' => '77IasdasadIasdadadadKL8t', // 一个随机的32位字符串
771- 'attempts' => 2 // 任务的已尝试次数
770+ 'id' => '77IasdasadIasdadadadKL8t', // 一个随机的32位字符串
771+ 'attempts' => 2 // 任务的已尝试次数
772772 ]
773773 ```
774774
@@ -863,7 +863,7 @@ public function failed($jobData){
863863
864864- ** 3.6.2** 使用了 ` queue:work --daemon ` ,但更新代码后没有使用 ` queue:restart ` 重启 work 进程, 使得 work 进程中的代码与最新的代码不同,出现各种问题。
865865
866- - ** 3.6.3** 使用了 ` queue:work --daemon ` ,但是消费者类的 fire() 方法中存在死循环,或者 ` sleep(n) ` 这样的逻辑 ,导致消息队列被堵塞。
866+ - ** 3.6.3** 使用了 ` queue:work --daemon ` ,但是消费者类的 fire() 方法中存在死循环,或 ` sleep(n) ` 等逻辑 ,导致消息队列被堵塞;或者使用了 ` exit() ` , ` die() ` 这样的逻辑,导致work进程直接终止 。
867867
868868- ** 3.6.4** 配置的 expire 为 ` null ` ,这时如果采用的是 Redis 驱动且使用了延迟功能,如 ` later(n) ` , ` release(n) ` 方法或者 ` --delay ` 参数不为0 , 那么将导致被延迟的任务永远无法处理。(这个可能属于框架的[ Bug] ( https://github.com/top-think/think-queue/issues/12 ) )
869869
@@ -873,7 +873,7 @@ public function failed($jobData){
873873
874874- ** 3.6.7** 使用 ` Queue::push($jobHandlerClassName , $jobData, $jobQueueName ); ` 推送任务时,` $jobData ` 中包含未序列化的对象。这时,在消费者端拿到的 ` $jobData ` 中拿到的是该对象的public 属性的键值对数组。因此,需要在推送前手动序列化对象,在消费者端再手动反序列化还原为对象。
875875
876-
876+
877877
878878### 四 拓展
879879
0 commit comments