2018-09-21 13:18:45 2878次浏览 0条回答 0 悬赏 50 金钱

config

<?php
'bootstrap' => [
    'queue', 'amqp'
],
'components' => [
    'queue' => [
        'class' => \yii\queue\redis\Queue::class,
        'redis' => 'redis_job',
        'as log' => \yii\queue\LogBehavior::class,
    ],
    'amqp' => [
        'class' => \yii\queue\amqp_interop\Queue::class,
        'host' => 'localhost',
        'port' => 5672,
        'user' => 'guest',
        'password' => 'guest',
        'queueName' => 'queue',
        'driver' => yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB,
        'as log' => \yii\queue\LogBehavior::class,
    ],
],

入队代码

<?php
$id = Yii::$app->amqp->push(new RabbitMQJob([
            'userID' => 3,
            'status' => 10,
]));

可以获取到任务ID
QQ20180921-132300.png

出队代码

<?php
namespace console\jobs;

use Yii;
use yii\base\BaseObject;
use yii\queue\RetryableJobInterface;
use common\models\admin\User;
class RabbitMQJob extends BaseObject implements RetryableJobInterface
{
    public $queue;

    public $userID;
    public $status;

    public function execute($queue)
    {
        Yii::warning($this->status);
        $user = User::findOne($this->userID);
        $user->status = $this->status ? User::STATUS_ACTIVE : User::STATUS_DELETED;
        $user->save();
    }

    public function getTtr()
    {
        return 60;
    }

    public function canRetry($attempt, $error)
    {
        return $attempt < 3;
    }
}

没有生效execute方法

redis完全可以使用

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
計斐同學
助理

計斐同學

注册时间:2015-12-21
最后登录:2019-06-21
在线时长:4小时46分
  • 粉丝2
  • 金钱155
  • 威望0
  • 积分195

热门问题