Удаленная очередь Python RabbitMQ sender.py

Я пытаюсь отправить сообщение в очередь кролика mq на удаленной машине. Я следую этому руководству.

Программа для подключения к локальному хосту работает нормально. Но программа для подключения к удаленной очереди не работает. Ошибка должна лежать при создании соединения, потому что я не вижу сообщения журнала «соединение создано».

Я проверил, что могу получить доступ к удаленному хосту, порту с моей машины, и учетные данные верны. я могу получить доступ

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
Вы подключаетесь с гостевой учетной записи? Гостевая учетная запись может подключаться только через локальный хост. 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