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

tpxzln5u  于 4个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(73)

我有以下配置的安装程序。

'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,以便在失败后再次连接
**我的发现:**这是一个无确认设置,我需要找到一种方法来重新启动队列/连接,因为我的队列似乎卡住了

fjaof16o

fjaof16o1#

由于某种原因,代理(RabbitMQ服务器)关闭了连接。或者可能是它重新启动,而worker中的连接不再有效。
避免这类问题的通常解决方案是在supervisord(http://supervisord.org/)或类似机制下运行进程,以便在发生错误时自动重新启动它们。

相关问题