我正在使用 vladimir-yuldashev/laravel-queue-rabbitmq 在 laravel 和 forge 中连接,并使用 RabbiqMQ 消息生成器、连接丢失/代理管道

问题描述 投票:0回答:1

我已使用以下配置进行设置。

  'derayah' => [
            'driver' => 'rabbitmq',
            'queue' => env('RABBITMQ_QUEUE', 'default'),
            'connection' => PhpAmqpLib\Connection\AMQPStreamConnection::class,

            'hosts' => [
                [
                    'host' => env('RABBITMQ_HOST', '127.0.0.1'),
                    'port' => env('RABBITMQ_PORT', 5672),
                    'user' => env('RABBITMQ_USER', 'guest'),
                    'password' => env('RABBITMQ_PASSWORD', 'guest'),
                    'vhost' => env('RABBITMQ_VHOST', '/'),
                ],
            ],
            'worker' => env('RABBITMQ_WORKER', 'default'),

            'options' => [
                'ssl_options' => [
                    'cafile' => env('RABBITMQ_SSL_CAFILE'),
                    'local_cert' => env('RABBITMQ_SSL_LOCALCERT'),
                    'local_key' => env('RABBITMQ_SSL_LOCALKEY'),
                    'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
                    'passphrase' => env('RABBITMQ_SSL_PASSPHRASE'),
                ],
                'queue' => [
                    'job' => App\Listeners\Derayah::class,
                ],
            ],
        ],

我正在使用 Laravel Forge 创建 Deamon,命令如下

queue:work' derayah --sleep=10 --daemon --quiet --delay=10 --tries=5 --queue='B_Transaction,S_Transaction,M_Transaction'

它是一个股票市场提要,它提供有关特定人是否在经纪人上进行了某些交易的消息,并且我们将其保存在我们的系统中,它通常工作正常,但有时会因以下错误而失败


PhpAmqpLib\Exception\AMQPRuntimeException /artisan in ?
Lost connection: Broken pipe or closed connection

然后这会不断出现在日志中

PhpAmqpLib\Exception\AMQPIOException /artisan in ?
stream_socket_client(): Unable to connect to tcp://213.184.187.103:5672 (Connection refused)

我的解决方案:我需要从forge重新启动QUEUE manullay,以便在失败后再次连接

我的发现:它是一个无确认设置,我需要找到一种方法来重新启动队列/连接,因为我的队列似乎被卡住了

laravel rabbitmq forge php-amqplib
1个回答
0
投票

代理(RabbitMQ 服务器)由于某种原因关闭了连接。或者可能它重新启动并且工作线程中的连接不再有效。

避免此类问题的通常解决方案是在supervisord(http://supervisord.org/)或类似的下运行进程,以便在发生错误时自动重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.