我使用vladimir-yuldashev/laravel-queue-rabbitmq庫流明項目中使用RabbitMQ的隊列「PhpAmqpLib \異常\ AMQPRuntimeException通道連接被關閉」錯誤與流明隊列。:
隊列功能工作正常,但我看到下面噸的錯誤在我的日誌文件。
lumen.ERROR: PhpAmqpLib\Exception\AMQPRuntimeException: Channel connection is closed. in /var/www/html/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php:227
從錯誤堆棧跟蹤看來,隊列名稱看起來是「NULL」。下面是從queue.php
'rabbitmq' => [
'driver' => 'rabbitmq',
'host' => env('RABBITMQ_HOST', 'rabbitmq'),
'port' => env('RABBITMQ_PORT', 5672),
'vhost' => env('RABBITMQ_VHOST', '/'),
'login' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'queue' => env('RABBITMQ_QUEUE'),
// name of the default queue,
'exchange_declare' => env('RABBITMQ_EXCHANGE_DECLARE', true),
// create the exchange if not exists
'queue_declare_bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', true),
// create the queue if not exists and bind to the exchange
'queue_params' => [
'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false),
],
'exchange_params' => [
'name' => env('RABBITMQ_EXCHANGE_NAME', null),
'type' => env('RABBITMQ_EXCHANGE_TYPE', 'direct'),
// more info at http://www.rabbitmq.com/tutorials/amqp-concepts.html
'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
// the exchange will survive server restarts
'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
],
'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5), // the number of seconds to sleep if there's an error communicating with rabbitmq
]
我不使用默認隊列RabbitMQ的我的連接配置。相反,我的每個事件監聽器爲自己聲明一個隊列。這裏是我如何使用隊列命令來啓動worker和listeners。
工人
php artisan queue:work rabbitmq
聽衆
php artisan queue:listen --queue=my-queue-1 --timeout=0
php artisan queue:listen --queue=my-queue-2 --timeout=0
php artisan queue:listen --queue=my-queue-3 --timeout=0
每個這些隊列功能工作正常。
我的問題是:
- 是否確定要啓動多個監聽器只是一個工人?
- 爲什麼我的日誌中充滿了這些錯誤?我該如何解決這個問題?
還要說明一點:不知道,如果它很重要,我的事件鏈。即我正在從事件1聽衆發射事件2等等。