各位好,我想請問一下
我開了一台虛擬機(IP 為 192.168.0.102),裡面有裝 RabbitMQ
我如果在實體機上輸入 http://192.168.0.102:15672/
可以顯示畫面
我照著官網給的資訊寫了一小段程式,在實體機上,如下
因為我看官網寫的是 localhost
所以想說改成用虛擬機的 IP 192.168.0.102
嘗試看看,可是失敗了
請問要怎麼做才能從實體機連入虛擬機,有辦法嗎?
在虛擬機裡用
localhost
可以正常執行,沒問題
感謝
producer.py
import pika
# 連接 rabbitmq
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.0.102'))
# 頻道 控制對象
channel = connection.channel()
# 創建對列
channel.queue_declare(queue='hello')
# 向對指定列插入數據
channel.basic_publish(exchange='', # 簡單模式
routing_key='hello', # 指定對列
body='Hello World!') # 指定數據
print(" [x] Sent 'Hello World!'")
error message(在實體機上跑的結果)
Traceback (most recent call last):
File "01_producer.py", line 5, in <module>
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.0.102'))
File "C:\Users\pcymi\AppData\Local\Programs\Python\Python38\lib\site-packages\pika\adapters\blocking_connection.py", line 359, in __init__
self._impl = self._create_connection(parameters, _impl_class)
File "C:\Users\pcymi\AppData\Local\Programs\Python\Python38\lib\site-packages\pika\adapters\blocking_connection.py", line 450, in _create_connection
raise self._reap_last_connection_workflow_error(error)
pika.exceptions.ProbableAuthenticationError: ConnectionClosedByBroker: (403) 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.'
印象中 RabbitMQ 的 AMQP 是預設監聽在 5672
port,虛擬機的防火牆
對外有開放 5672 port 嗎~?
好像沒什麼改變(我執行 sudo ufw allow in 5672
)
我有把錯誤訊息放在上面了,請在上去看一下!(一開始忘記放了)
RabbitMQ 有設定帳號密碼嗎?
錯誤訊息可以看到最後一行顯示
(403) 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.'
看起來有連到但登入驗證沒有過,因此可以試著在程式裡面加入 PlainCredentials
進行驗證,官方的範例如下
在此附上官方文件
可以傳送了,感謝(ノ>ω<)ノ
另外我剛有試出另一個方法,就是讓 guest 可以在實體機上登陸管理介面的話就可以不用再另外設定帳號,就能以最易開始的方式登入
之前 guest 不能登入
我猜是你MQ只監聽localhost
而不是0.0.0.0