The driver works with RabbitMQ queues.
In order for it to work you should add any amqp interop compatible transport to your project, for example enqueue/amqp-lib
package.
Advantages:
It would work with any amqp interop compatible transports, such as
Configuration example:
return [
'bootstrap' => [
'queue', // The component registers own console commands
],
'components' => [
'queue' => [
'class' => \yii\queue\amqp_interop\Queue::class,
'port' => 5672,
'user' => 'guest',
'password' => 'guest',
'queueName' => 'queue',
'driver' => yii\queue\amqp_interop\Queue::ENQUEUE_AMQP_LIB,
// or
'dsn' => 'amqp://guest:guest@localhost:5672/%2F',
// or, same as above
'dsn' => 'amqp:',
],
],
];
Console is used to listen and process queued tasks.
yii queue/listen
listen
command launches a daemon which infinitely queries the queue. If there are new tasks
they're immediately obtained and executed. This method is most efficient when command is properly
daemonized via supervisor or systemd.
listen
command has options:
--verbose
, -v
: 详细模式执行作业。如果启用,将打印每个作业的执行结果。--isolate
: 隔离模式。将在子进程中执行作业。--color
: 在详细模式下高亮显示输出结果。The setMessageHeaders
attribute can be used to send random headers to the queue along with the message.
For example:
$queue = Yii::$app->queueTest;
$queue->setMessageHeaders = [
'header1' => 'header-value1',
'header2' => 'header-value2',
];
$queue->push(new TestJob());
Note! Existing headers will not be overwritten by default.