首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与RabbitMQ的连接不只是在PHP中工作

与RabbitMQ的连接不只是在PHP中工作
EN

Stack Overflow用户
提问于 2022-08-30 15:13:45
回答 2查看 224关注 0票数 2

我正试着连接到兔子队列。由于某些原因,文档中的示例无法工作(仅在PHP中出于某种原因)

图书馆

代码语言:javascript
运行
复制
amqplib/php-amqplib

不工作的PHP代码:

代码语言:javascript
运行
复制
$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代码:

代码语言:javascript
运行
复制
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包有一些自动应用于这个连接的神奇参数吗?我在想,也许我需要一些特定的参数来传递。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-14 10:15:00

问题在连接设置中。其他库会自动执行此操作,但PHP不会这样做,因此,如果您想处理amqps,您需要向证书添加路径,如下所示:

代码语言:javascript
运行
复制
$connection = new AMQPStreamConnection(
    'test.cloudamqp.com',
    5671,
    'test',
    'test',
    'vhostName',
    [
      'capath' => '/etc/ssl/certs'
    ]
);
票数 0
EN

Stack Overflow用户

发布于 2022-08-30 15:30:32

而不是创建一个新的AMQPStreamConnection对象,而是装入一个新的AMQPSSLConnection

其他一切都应该是相同的,但是您可能需要设置ssl_protocol (默认为ssl)。

请参阅AMQPSSLConnection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73544770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档