yii2 - 如何使用 Yii2 Queue::EVENT_AFTER_ERROR 事件

标签 yii2 queue

我正在使用 Yii2 队列扩展。

我想在作业中触发错误事件后添加错误处理程序。

这是我的模型:

namespace app\models;

use Yii;
use yii\base\BaseObject;
use yii\queue\JobInterface;
use yii\queue\Queue;

class AddTransaction extends BaseObject implements JobInterface
{
    public function execute($queue)
    {
        $test = new League();
        $test->title_fa = 'تست';
        $test->title_en = 'test';
        $test->status = 1;
        $test->country_id = 3;
        $test->created = time();
        $test->save();
    }
}

这是我的行动:

public function actionTest()
{
    if (Yii::$app->queue->delay(5)->push(new AddTransaction())) {
        echo "ok";
    } else {
        echo "error";
    }
}

在哪里使用此代码?

Yii::$app->queue->on(Queue::EVENT_AFTER_ERROR, function (ErrorEvent $event) {
     if ($event->job instanceof SomeJob) {
         $event->retry = ($event->attempt < 5) && ($event->error instanceof TemporaryException);
     }
});

最佳答案

您可以将其添加到队列配置数组中:

'components' => [
    // ...
    'queue' => [
        // ...
        'on afterError' => function (ExecEvent $event) {
            if ($event->job instanceof SomeJob) {
                $event->retry = ($event->attempt < 5) && ($event->error instanceof TemporaryException);
            }
        },
    ],
],

关于yii2 - 如何使用 Yii2 Queue::EVENT_AFTER_ERROR 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55209420/

相关文章:

asynchronous - 如何使用 async.queue 避免 "Callback was already called"?

javascript - 使用D3 Queue进行跨站点调用

c++ - 排队对象的分配策略

php - yii2 GridView 在表外搜索字段

Python 线程/队列问题

architecture - 当队列下降时怎么办?

php - yii2 radioList 内联表单域

search - Yii2 修改 Model search() 中的 find() 方法

php - Yii 2 dropDownList - 未选择默认值

nginx - Docker 容器 : how do they work together?