yii2-queue конфигурацяи под контейнер DI?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

Попытался было такие конфиги:

Код: Выделить всё

'bootstrap' => [
    'yii\queue\Queue' 
],
'container' => [
    'singletons' => [
        'yii\queue\Queue' => [
            'class' => \yii\queue\redis\Queue::class,
            'channel' => 'default',
            'redis' => 'redis',
        ],
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],
и тип того:

Код: Выделить всё

'bootstrap' => [
    'queue' 
],
'container' => [
    'singletons' => [
        'queue' => [
            'class' => \yii\queue\redis\Queue::class,
            'channel' => 'default',
            'redis' => 'redis',
        ],
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],
в вебе +- работает, консоль ни в какую не грузит. Настраивал кто не? Поделитесь рабочим конфигом.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

Посмотрите чтобы redis не дублировался в компонентах, если он там будет, то возьмет из сервис-локатора, а не из контейнера.
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

yiiliveext писал(а): 2019.12.21, 12:57 Посмотрите чтобы redis не дублировался в компонентах, если он там будет, то возьмет из сервис-локатора, а не из контейнера.
Это само собой. Проблема в том, что в бутстрапе добавляются команды для консоли. И вот они не работают. Без костылей тут никак не сделаешь. Потому что добавление команд идет только через сервис локатор. Говно и палки ребята. Расходимся...
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

Не факт. Приведите конфиг для консоли для понимания процесса, может смогу чем помочь.
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

yiiliveext писал(а): 2019.12.21, 22:23 Не факт. Приведите конфиг для консоли для понимания процесса, может смогу чем помочь.
Увы, факт. https://github.com/yiisoft/yii2-queue/b ... ue.php#L72
Автор поделки даже в мыслях не допустил, что его либа может конфигурироваться в IoC контейнере...
Конфиг для консоли выше. 2 варианта.
Вместо бутстрап секции можно конечно добавить controllerMap:

Код: Выделить всё

 'controllerMap' => [
    'queue' => [
        'class' => yii\queue\redis\Command::class,
        'queue' => yii\di\Instance::of('yii\queue\Queue'),
    ],
],
Но это явный костыль, потому что при запуске приложения каждый раз будет подниматься инстанс очереди. Нужна она или не нужна, объект будет создаваться всегда.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

Переопределите protected function getCommandId() и будет вам счастье.
AlikDex писал(а): 2019.12.22, 09:38 Но это явный костыль, потому что при запуске приложения каждый раз будет подниматься инстанс очереди. Нужна она или не нужна, объект будет создаваться всегда.
Вы же ее бутстрапите, она и при обычном использовании в виде компонента всегда создается.
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

Что? Переопределить?! ...
Ты понимаешь о чем я вообще?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

AlikDex писал(а): 2019.12.22, 12:45 Что? Переопределить?! ...
Ты понимаешь о чем я вообще?
Во-первых, тыкать незнакомым людям - дурной тон.
Во-вторых, для тех, кто не осилил ООП

Код: Выделить всё

namespace app\components;

class RedisQueue extends \yii\queue\redis\Queue
{
    protected function getCommandId()
    {
        foreach (Yii::$app->getComponents(false) as $id => $component) {
            if ($component === $this) {
                return Inflector::camel2id($id);
            }
        }
        if (Yii::$container->hasSingleton('queue')) {
            if (Yii::$container->get('queue') === $this) {
                return 'queue';
            }
        }
        
        throw new InvalidConfigException('Queue must be an application component or singleton.');
    }
}

Код: Выделить всё

'bootstrap' => [
    'queue' 
],
'container' => [
    'singletons' => [
        'queue' => [
            'class' => \app\components\RedisQueue::class,
            'channel' => 'default',
            'redis' => 'redis',
        ],
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

yiiliveext писал(а): 2019.12.22, 14:35 Во-вторых, для тех, кто не осилил ООП

Код: Выделить всё

namespace app\components;

class RedisQueue extends \yii\queue\redis\Queue
{
    protected function getCommandId()
    {
        foreach (Yii::$app->getComponents(false) as $id => $component) {
            if ($component === $this) {
                return Inflector::camel2id($id);
            }
        }
        if (Yii::$container->hasSingleton('queue')) {
            if (Yii::$container->get('queue') === $this) {
                return 'queue';
            }
        }
        
        throw new InvalidConfigException('Queue must be an application component or singleton.');
    }
}
Ты серьезно? 1 костыль заменить на другой, к тому же еще и с дописыванием файлов, никому не нужным наследованием и кривой реализацией... Братюнь, оставь свои советы фанатам "переопределялкинам".
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

AlikDex писал(а): 2019.12.22, 15:10 Ты серьезно? 1 костыль заменить на другой, к тому же еще и с дописыванием файлов, никому не нужным наследованием и кривой реализацией... Братюнь, оставь свои советы фанатам "переопределялкинам".
Мда, быдло среди программистов сейчас не редкость.
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

Давай не будем а? Я же написал что без костылей невозможно законфижить, после того как провел глубокое исследование исходников библиотеки. Ты в свою очередь зачем-то обвиняешь меня в том, что я не осилил ооп... И настойчиво предлагаешь свои бредовые альтернативы. Просто угомонись и все.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

AlikDex писал(а): 2019.12.22, 15:33 Давай не будем а? Я же написал что без костылей невозможно законфижить
Наследование и переопределение методов - это не костыль, а базовые принципы ООП. Обвинять разработчиков библиотеки в недальновидности можно было бы, если бы они поставили у этого метода модификатор доступа private.
провел глубокое исследование исходников библиотеки
Спасибо, поржал.
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

Господи... Прекрати.
zemlia-zemlia
Сообщения: 35
Зарегистрирован: 2019.12.05, 20:03

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение zemlia-zemlia »

Ой господа. Я вижу вы совсем хорошо с ней разобрались, с этой queue.
Подскажите, плиз, простой вопрос.
viewtopic.php?f=19&t=53986&sid=5e7b9a14 ... 9e07e70aa3
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

zemlia-zemlia писал(а): 2019.12.22, 16:18 Ой господа. Я вижу вы совсем хорошо с ней разобрались, с этой queue.
Подскажите, плиз, простой вопрос.
viewtopic.php?f=19&t=53986&sid=5e7b9a14 ... 9e07e70aa3
Вы в своей теме ответы не читаете?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение yiiliveext »

AlikDex писал(а): 2019.12.22, 16:09 Господи... Прекрати.
Вы хоть в курсе после "глубокого" изучения кода, что ваш костыль с controllerMap нарушает функционал библиотеки?
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: yii2-queue конфигурацяи под контейнер DI?

Сообщение AlikDex »

Смотрю тебе очень хочется поделится. Не стесняйся.
Ответить