我正在尝试从PHP连接到RabbitMQ docker容器。
我得到的错误是Uncaught exception 'ErrorException' with message 'stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known'
。我认为这是我将程序指向RabbitMQ进程的一个问题。
我认为导致错误的代码片段是
$connection = new AMQPStreamConnection(getenv('MESSAGE_BROKER_HOST'), 5672, 'guest', 'guest');
我正在访问的环境变量在.env中定义为
MESSAGE_BROKER_HOST=amqp://rabbitmq
我不习惯停泊,但我觉得这应该有效,因为运行此代码的过程将RabbitMQ在docker-compose文件中链接为“rabbitmq”。
答案 0 :(得分:1)
MESSAGE_BROKER_HOST
env应为rabbitmq
而不amqp://
,因为phpamqp-lib不支持DSN。
如果您想处理真实的DSN,请查看enqueue/amqp-lib。
代码如下:
<?php
use Enqueue\AmqpLib\AmqpConnectionFactory;
$factory = new AmqpConnectionFactory('amqp://guest:guest@rabbitmq:5672/%2f');
答案 1 :(得分:0)
你的方法看起来很好。我能想到的唯一问题是guest
用户的权限不足。 RabbitMQ的默认guest
用户只能从localhost访问。虽然权限不足不应该抛出unknown service
错误。
尝试创建新用户可能会解决问题。 有关来宾用户权限的详细信息,您可以看到以下链接: https://www.rabbitmq.com/access-control.html