无法创建新的AMQPSSLConnection“管道断开或关闭的连接”

时间:2018-11-09 15:43:33

标签: php rabbitmq

我正在尝试使用

连接到Rabbit服务器
   require_once __DIR__ . '/vendor/autoload.php';
   use PhpAmqpLib\Connection\AMQPSSLConnection;
   $connection = new AMQPSSLConnection ('example.com', 5671, 'uname', '***', '/some/vhost');

我得到的只是一个异常“管道破裂或关闭的连接”。服务器人员确认我的连接参数正确。我不知道该怎么办。

我正在使用PHP 7和php-amqplib v2.7.2。

帮助?

#0 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Wire\AMQPReader.php(149): PhpAmqpLib\Wire\IO\StreamIO->read(7)
#1 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Wire\AMQPReader.php(106): PhpAmqpLib\Wire\AMQPReader->rawread(7)
#2 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AbstractConnection.php(522): PhpAmqpLib\Wire\AMQPReader->read(7)
#3 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AbstractConnection.php(570): PhpAmqpLib\Connection\AbstractConnection->wait_frame(3)
#4 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Channel\AbstractChannel.php(225): PhpAmqpLib\Connection\AbstractConnection->wait_channel(0, 3)
#5 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Channel\AbstractChannel.php(335): PhpAmqpLib\Channel\AbstractChannel->next_frame(3)
#6 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AbstractConnection.php(214): PhpAmqpLib\Channel\AbstractChannel->wait(Array, false, 3)
#7 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AbstractConnection.php(189): PhpAmqpLib\Connection\AbstractConnection->connect()
#8 vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AMQPStreamConnection.php(60): PhpAmqpLib\Connection\AbstractConnection->__construct('t

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我花了很多时间才修复它,因为我没有对 RabbitMQ 和日志的管理员访问权限。我通过将 AMQPLAIN 登录方法更改为 PLAIN 解决了这个问题。我使用了 AMQPStreamConnection 而不是 AMQPSSLConnection,但语法非常相似。

AMQPStreamConnection:

$connection = new AMQPStreamConnection(
   config('amqp.host'),
   config('amqp.port'),
   config('amqp.username'),
   config('amqp.password'),
   config('amqp.vhost'),
   false,
  'PLAIN'
);

AMQPSSL 连接:

$connection = new AMQPSSLConnection(
   config('amqp.host'),
   config('amqp.port'),
   config('amqp.username'),
   config('amqp.password'),
   config('amqp.vhost'),
   [], // Your SSL options
   ['login_method' => 'PLAIN'] // Your options
);