Python RabbitMQ sender.py คิวระยะไกล

ฉันกำลังพยายามส่งข้อความไปยังคิว rabbit mq ในเครื่องระยะไกล ฉันกำลังติดตามบทแนะนำนี้

โปรแกรมเชื่อมต่อกับ localhost ทำงานได้ดี แต่โปรแกรมเชื่อมต่อกับคิวระยะไกลไม่ทำงาน ข้อผิดพลาดจะต้องอยู่เมื่อสร้างการเชื่อมต่อ เพราะฉันไม่เห็นข้อความบันทึก 'สร้างการเชื่อมต่อแล้ว'

ฉันได้ตรวจสอบแล้วว่าฉันสามารถเข้าถึงโฮสต์ระยะไกล พอร์ตจากเครื่องของฉัน และข้อมูลประจำตัวนั้นถูกต้อง ฉันสามารถเข้าถึงได้

http://remote-host:15672/#/queues

ฉันขาดสิ่งใดที่ชัดเจนไปหรือเปล่า?

ท้องถิ่น

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()

ระยะไกล

#!/usr/bin/env python
import pika

# this queue is the destination queue
credentials = pika.PlainCredentials('xxxx', 'xxxx')
parameters = pika.ConnectionParameters('remote-host', 15672, '/', credentials)
connection = pika.BlockingConnection(parameters)
print " connection created"

channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='helloEx', routing_key='', body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()

อัปเดต นี่เป็นข้อผิดพลาดที่ฉันได้รับขณะพยายามเชื่อมต่อ

ERROR:pika.adapters.base_connection:Socket Error on fd 3: 54 Traceback (most recent call last): File "remote-sender.py", line 10, in connection = pika.BlockingConnection(parameters) File "/Library/Python/2.7/site-packages/pika/adapters/base_connection.py", line 61, in init super(BaseConnection, self).init(parameters, on_open_callback) File "/Library/Python/2.7/site-packages/pika/connection.py", line 513, in init self._connect() File "/Library/Python/2.7/site-packages/pika/connection.py", line 804, in _connect self._adapter_connect() File "/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py", line 146, in _adapter_connect self.process_data_events() File "/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py", line 88, in process_data_events if self._handle_read(): File "/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py", line 184, in _handle_read super(BlockingConnection, self)._handle_read() File "/Library/Python/2.7/site-packages/pika/adapters/base_connection.py", line 300, in _handle_read return self._handle_error(error) File "/Library/Python/2.7/site-packages/pika/adapters/base_connection.py", line 264, in _handle_error self._handle_disconnect() File "/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py", line 181, in _handle_disconnect self._on_connection_closed(None, True) File "/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py", line 235, in _on_connection_closed raise exceptions.AMQPConnectionError(*self.closing) pika.exceptions.AMQPConnectionError: (0, '')


person ravindrab    schedule 10.11.2014    source แหล่งที่มา
comment
คุณกำลังเชื่อมต่อกับบัญชีแขกหรือไม่? บัญชี Guest สามารถเชื่อมต่อผ่าน localhost เท่านั้น rabbitmq.com/access-control.html   -  person kponz    schedule 10.11.2014
comment
@kponz ไม่ ไม่ใช่บัญชีแขก   -  person ravindrab    schedule 10.11.2014


คำตอบ (2)


ใช้พอร์ต 5672 ไม่ใช่ 15672 ! มันควรจะได้ผล!

person Gabriele Santomaggio    schedule 10.11.2014
comment
ฉันทำมัน. แต่ฉันก็ได้รับผลลัพธ์เดียวกัน ฉันตรวจสอบแล้วว่าฉันสามารถเข้าถึงพอร์ตนั้นได้ อัปเดตคำถามพร้อมข้อผิดพลาดที่ฉันได้รับ มีความคิดใดบ้างที่อาจเกิดปัญหา? ขอบคุณ! - person ravindrab; 10.11.2014
comment
@ravindrab ขออภัยฉันแก้ไขพอร์ตที่ถูกต้องคือ 5672! - person Gabriele Santomaggio; 10.11.2014
comment
ฉันลองด้วยพอร์ตที่ถูกต้อง 5672 อัปเดตคำตอบพร้อมข้อผิดพลาดที่ฉันเห็น - person ravindrab; 10.11.2014
comment
ถ้าไม่ใช่ปัญหาไฟร์วอลล์ คุณควรตรวจสอบบันทึกของ rabbitmq เพื่อดูว่าการเชื่อมต่อมาถึง RabbitMQ หรือไม่ ฉันอยากจะแนะนำให้อ่านโพสต์นี้: github.com/pika/pika/issues/266 - person Gabriele Santomaggio; 10.11.2014
comment
ปัญหาคือฉันไม่ได้ระบุ vhost parameters = pika.ConnectionParameters('remote-host', 5672, 'product', credentials) ทำเคล็ดลับแล้ว - person ravindrab; 10.11.2014

จำเป็นต้องระบุโฮสต์เสมือนอย่างถูกต้อง ในกรณีของฉัน คิวของฉันเป็นของโฮสต์เสมือน แต่ฉันพยายามเชื่อมต่อกับ '/' หลังจากระบุโฮสต์เสมือน (ผลิตภัณฑ์ ด้านล่าง) ฉันสามารถเชื่อมต่อได้สำเร็จ

พบว่าลิงก์นี้มีประโยชน์

#!/usr/bin/env python
import pika

# this queue is the destination queue
credentials = pika.PlainCredentials('xxxx', 'xxxx')
parameters = pika.ConnectionParameters('remote-host', 5672, 'product', credentials)
connection = pika.BlockingConnection(parameters)
print " connection created"

channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='helloEx', routing_key='', body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
person ravindrab    schedule 10.11.2014
comment
ฉันกำลังพยายามใช้ RabbitMQ บนโลคัลโฮสต์ของฉัน แต่มีปัญหากับมัน คุณช่วยชี้แนะเกี่ยวกับเรื่องนั้นให้ฉันหน่อยได้ไหม - person Pankaj Nimgade; 18.11.2014
comment
ปัญหาเฉพาะของคุณคืออะไร? - person ravindrab; 22.01.2015