我正试着连接到兔子队列。由于某些原因,文档中的示例无法工作(仅在PHP中出于某种原因)
图书馆
amqplib/php-amqplib
不工作的PHP代码:
$connection = new AMQPStreamConnection(
'test.cloudamqp.com',
5671,
'test',
'test',
'test'
);
我收到下一个错误:
PHP致命错误:未打开PhpAmqpLib\Exception\AMQPConnectionClosedException:断管或/home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:172堆栈跟踪中的关闭连接:#0 /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/AMQPReader.php(158):PhpAmqpLib\Wire\IO\StreamIO->read() #1 /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/AMQPReader.php(104):PhpAmqpLib\Wire\AMQPReader->rawread() #2 /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(576):PhpAmqpLib\/home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(576):\AMQPReader->read() #3 /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(632):PhpAmqpLib\Connection\AbstractConnection->wait_frame() #4 /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php(235):PhpAmqpLib\Connection\ in /home/mykola/Projects/vs-php-clipping-engine/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php第172号行
功能完美的Golang代码:
package main
import (
"log"
amqp "github.com/rabbitmq/amqp091-go"
)
func failOnError(err error, msg string) {
if err != nil {
log.Panicf("%s: %s", msg, err)
}
}
func main() {
conn, err := amqp.Dial("amqps://test:test@test.cloudamqp.com/test")
failOnError(err, "Failed to connect to RabbitMQ")
defer conn.Close()
}
一个golang包有一些自动应用于这个连接的神奇参数吗?我在想,也许我需要一些特定的参数来传递。
发布于 2022-09-14 10:15:00
问题在连接设置中。其他库会自动执行此操作,但PHP不会这样做,因此,如果您想处理amqps,您需要向证书添加路径,如下所示:
$connection = new AMQPStreamConnection(
'test.cloudamqp.com',
5671,
'test',
'test',
'vhostName',
[
'capath' => '/etc/ssl/certs'
]
);
发布于 2022-08-30 15:30:32
而不是创建一个新的AMQPStreamConnection
对象,而是装入一个新的AMQPSSLConnection
其他一切都应该是相同的,但是您可能需要设置ssl_protocol (默认为ssl)。
https://stackoverflow.com/questions/73544770
复制相似问题