2017-08-20 62 views
0

我試圖從PHP連接到RabbitMQ碼頭集裝箱。 我得到的錯誤是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作爲「rabbitmq」鏈接到docker-compose文件中。

+0

您使用自定義的網絡,搬運工,撰寫文件? – Raheel

+0

這將是定義網絡:前端:....後端:...等在碼頭合成,對吧?如果是這樣,那麼不,我不是。 – Xeneficus

回答

1

MESSAGE_BROKER_HOST ENV應rabbitmq沒有amqp://因爲phpamqp-lib不支持的DSN。

如果你想處理真正的DSN看看enqueue/amqp-lib

的代碼是這樣:

<?php 
use Enqueue\AmqpLib\AmqpConnectionFactory; 

$factory = new AmqpConnectionFactory('amqp://guest:[email protected]:5672/%2f'); 
0

你的方法看起來不錯。我能想到的唯一問題是guest用戶的權限不足。 RabbitMQ的默認guest用戶只能從本地主機訪問。雖然權限不足應該會丟失unknown service錯誤。

嘗試創建一個新用戶可能會解決這個問題。 有關guest用戶的權限的詳細信息,你可以看到這個鏈接: https://www.rabbitmq.com/access-control.html

+0

我不這麼認爲。當我運行一個php腳本從dockercontainer外部測試RabbitMQ時,它可以與參數'localhost',5672,'guest','guest'一起使用。 – Xeneficus

相關問題