Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Jormungan
Сообщения: 6
Зарегистрирован: 2019.01.19, 12:46

Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение Jormungan »

Мне нужно, что бы во время выполнения задачи создавался новый job, отправлялся в другую очередь и обрабатывались отдельно, но созданный job отрабатывает сразу и дублируется в новой очереди.

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

'bootstrap' => [
        'queueSend',
        'queueStat',
    ],
 'components' => [
        'queueSend' => [
      		'queueName' => 'queue_send',
		'class' => \yii\queue\amqp_interop\Queue::class,
		'driver' => yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB,
        ],
        'queueStat' => [
            	'queueName' => 'queue_stat',
		'class' => \yii\queue\amqp_interop\Queue::class,
		'driver' => yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB,
        ],
    ]

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

Yii::$app->queueSend->push(new SendJob ($config));

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

class SendJob extends BaseObject implements JobInterface
{
	public function execute($queue)
	{
		...
		Yii::$app->queueStat->push(new SaveStatJob($config));
	}
}
Запускаю

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

yii queue-send/listen
И вижу что SaveStatJob отработал и при этом в очереди queue_stat висит сообщение.
Собственно почему SaveStatJob выполняется в рамках другого задания и как это исправить?

yii: 2.15
yii2-queue: 2.10
enqueue/amqp-lib: 0.8.42
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение samdark »

Драйвер файловый?
Jormungan
Сообщения: 6
Зарегистрирован: 2019.01.19, 12:46

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение Jormungan »

samdark писал(а): 2019.01.19, 22:09 Драйвер файловый?
AMQP Interop

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

yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB 
Jormungan
Сообщения: 6
Зарегистрирован: 2019.01.19, 12:46

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение Jormungan »

samdark писал(а): 2019.01.20, 19:01 Похоже на багу.
На сколько я понял, если очереди имеют одинаковый exchangeName (или он не указан), то сообщения падают во все очереди с этим exchangeName.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение samdark »

Так, значит я не так понял описание. Вообще это нормально что из одного exchange сообщения могут разлетаться по N очередям. Так Rabbit работает.
Jormungan
Сообщения: 6
Зарегистрирован: 2019.01.19, 12:46

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение Jormungan »

samdark писал(а): 2019.01.21, 15:40 Так, значит я не так понял описание. Вообще это нормально что из одного exchange сообщения могут разлетаться по N очередям. Так Rabbit работает.
Так получается если я не указываю exchange в конфиге, то он у меня автоматически создается для всех этих очередей.
Далее происходит следующее, есть 5 очередей, отправляю в одну очередь 10 сообщений, во всех 5ти очередях по 10 сообщений, собственно что бы этого избежать мне нужно для каждой очереди прописывать свой exchange. При этом я не увидел где мог бы указать routing key, что бы это хоть как то контролировать, да и собственно тип обменника я не могу поменять. Я все правильно понимаю?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii2-queue. Неправильная обработка job'а при добавление в очередь из задания

Сообщение samdark »

Да. exchange и его очередь вы сконфижить можете https://github.com/yiisoft/yii2-queue/b ... e.php#L170. Всё остальное нет.
Ответить