composer require webman/redis-queue
開發(fā)環(huán)境:win上使用docker開發(fā)測試
redis版本:
非延時投遞成功:
延時投遞失敗(不處理消息):
處理失敗的時候:
而且在生產(chǎn)環(huán)境linux使用隊列的途中,redis會斷開連接 然后提示連接超時
錯誤信息如下:
Fatal error: Uncaught RuntimeException: Workerman Redis Wait Timeout (10 seconds) in /data/www/tak-main/vendor/workerman/redis-queue/src/Client.php:169
Stack trace:
#0 /data/www/tak-main/vendor/workerman/redis/src/Client.php(303): Workerman\RedisQueue\Client->Workerman\RedisQueue\{closure}(false, Object(Workerman\Redis\Client))
#1 /data/www/tak-main/vendor/workerman/workerman/Events/Select.php(232): Workerman\Redis\Client->Workerman\Redis{closure}()
#2 /data/www/tak-main/vendor/workerman/workerman/Events/Select.php(281): Workerman\Events\Select->tick()
#3 /data/www/tak-main/vendor/workerman/workerman/Worker.php(2430): Workerman\Events\Select->loop()
#4 /data/www/tak-main/vendor/workerman/workerman/Worker.php(1555): Workerman\Worker->run()
#5 /data/www/tak-main/vendor/workerman/workerman/Worker.php(1385): Workerman\Worker::forkOneWorkerForLinux(Object(Workerman\Worker))
#6 /data/www/tak-main/vendor/workerman/workerman/Worker.php(1359): Workerman\Worker::forkWorkersForLinux()
#7 /data/www/tak-main/vendor/workerman/workerma in /data/www/tak-main/vendor/workerman/redis-queue/src/Client.php on line 169
Worker[28422] process terminated with ERROR: E_ERROR "Uncaught RuntimeException: Workerman Redis Wait Timeout (10 seconds) in /data/www/tak-main/vendor/workerman/redis-queue/src/Client.php:169
workerman/redis是個異步客戶端,本地會有個隊列將(get/set等)命令暫存發(fā)給redis服務(wù)端。 Workerman Redis Wait Timeout (10 seconds) 意思是隊列里有命令超過10秒還沒成功發(fā)送給redis服務(wù)端,觸發(fā)超時。出現(xiàn)這個問題一般是業(yè)務(wù)有長時間阻塞的代碼如sleep、curl等,或者redis讀寫量太大超過redis服務(wù)端承受能力。