2014-09-02 78 views
4

我剛剛在heroku中設置了一個RabbitMQ插件。在開發我的應用程序以排隊並使用在本地實例上運行的消息後,我將其部署到Heroku,並且尚未能成功連接。用戶名/密碼& hostname/port/vhost全部來自heroku config。如果我更改用戶名或密碼,錯誤更改爲ProbableAuthenticationError,這使我相信身份驗證至少是正確的,但可能是我的虛擬主機或其他某些缺失配置的問題。我還沒有看到任何類似的問題或一個小時的谷歌搜索沒有解決我的問題。由於ProbableAccessDeniedError無法連接到Heroku上的RabbitMQ

我已經嘗試了RABBITMQ_BIGWIG_RX_URLRABBITMQ_BIGWIG_TX_URL環境變量的發送和消費,並沒有組合似乎工作。以下是我嘗試連接的代碼。

url = 'small-laurel-24.bigwig.lshift.net' 
port = 10019 
vhost = '/notmyrealvhost' 

credentials = pika.PlainCredentials('username', 'password') 
parameters = pika.ConnectionParameters(url, port, vhost, credentials=credentials) 
connection = pika.BlockingConnection(parameters) 

有什麼我失蹤或任何方式弄清楚什麼具體配置錯誤?我在這裏不知所措。非常感謝提前!

我正在運行pika 0.9.14,python 2.7.3。

+0

可能不是它,但請記住,大多數虛擬主機的名稱中沒有'''/'''。默認是'''/''',而其他通常不用特殊字符命名,例如'''notmyrealvhost'''。 – eandersson 2014-09-04 13:43:31

+0

@eandersson我認爲你是對的。我以另一種方式解決了這個問題,但我有這種感覺。 – Stephen 2014-09-10 05:47:45

+0

我加了我自己的答案,並附有一個基本的解釋,以防別人遇到同樣的問題。 – eandersson 2014-09-10 12:28:31

回答

3

我最終解決了我的問題,使用pika上的URLParameters類來解析Heroku環境變量中的URL。

這需要像 amqp://username:[email protected]:10018/notmyrealvhost這樣的字符串,並根據需要解析所有內容。我自己做這件事情是不必要的複雜化。

8

問題很可能是您在虛擬主機中添加了正斜槓字符。許多用戶將這種情況與正斜槓作爲根目錄混淆,但實際上它只是默認的虛擬主機名。

除非你實際上命名使用正斜槓的虛擬主機,這個名字將永遠是相同的,你在管理控制檯中看到的名稱,例如:

  • my_virtualhost而不是/ my_virtualhost

這就是您的解決方案工作的原因,因爲您在使用URLParameters時未添加額外的正斜槓。

你原來的代碼會是這個樣子的使用URLParameters:

amqp://username:[email protected]:10018/%2Fnotmyrealvhost 

當你在你的答案上面提到的工作版本沒有正斜槓(%2F)字符。

amqp://username:[email protected]:10018/notmyrealvhost