2016-02-29 3 views
1

Я пытаюсь подключиться к удаленному кроличему с помощью pika, но получаю сообщение Connectionclosed(). Я внес необходимые изменения в rabbit.config для гостевого пользователя, чтобы разрешить все подключения, а также то же самое подключение работает с моим кодом Java. Я даже попытался создать нового пользователя со всем разрешением и подключить его, но он все равно не работает. Тем не менее, тот же код отлично работает на моем локальном хосте. Может кто-нибудь, пожалуйста, сообщите мне, что я могу сделать здесь неправильно?Не удается подключиться к удаленному серверу rabbitmq с помощью pika

def queue_message(message, queue): 
    credentials = pika.PlainCredentials('xxxx', 'xxxx') 
    parameters = pika.ConnectionParameters('remote-server', 
            5672, 
            '/', 
            credentials) 
    connection = pika.BlockingConnection(parameters) 
    channel = connection.channel() 
    channel.queue_declare(queue='python_update_queue') 
    channel.basic_publish(exchange='update.fanout', 
        body=message) 
    logger.info("Sent message: {} to queue: {}".format(message, queue)) 
    print 'message sent' 
    connection.close() 

Ниже ошибка я получаю:

app/project/rabbitmq.py" in queue_message 
connection = pika.BlockingConnection(parameters) 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in __init__ 
    self._process_io_for_connection_setup() 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in ss_io_for_connection_setup 
         self._open_error_result.is_ready) 
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in _flush_output 
     raise exceptions.ConnectionClosed 

ответ

5

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

также, ваш код явным вызовом connection.close() ... так что может быть, почему ваше соединение закрывается

+1

Вы правы о тайм-аут. Таймаут по умолчанию в pika устанавливается равным 0,25 секунды. После увеличения этого таймаута все работает плавно. Благодаря! – Crane

+0

Gosh Я искал часы, пока не нашел подсказки тайм-аута сокета. Большое спасибо, он, наконец, работает сейчас ... – schankam

0

При подключении к удаленному серверу RabbitMQ, проверить это:

  1. удаленный сервер порт открыт с брандмауэром

  2. удаленный сервер имеет публичный IP и пользователь RabbitMQ имеют доступ к этому серверу

  3. RabbitMQ сервер активирован
4

Это действительно была проблема с таймаутом. После увеличения таймаута в параметрах соединения соединение было установлено правильно.

parameters = pika.ConnectionParameters('remote-server', 
            5672, 
            '/', 
            socket_timeout=2) 
-1
  • добавить администратора пользователя в администратора теге;

    rabbitmqctl set_user_tags admin administrator  
    
  • добавить достаточное количество разрешений для пользователя администратора

    rabbitmqctl set_permissions -p/admin ".*" ".*" ".*"  
    
Смежные вопросы