2017-10-12 18 views
-2

RabbitMQ & python pika로 두 개의 호스트를 연결하려고합니다. 여기원격 RabbitMQ 서버에 연결하는 동안 AccessDeniedError

는 노동자입니다 :

#!/usr/bin/env python 
import pika, time 
NEW_TASK_HOST_IP = '192.168.0.2' 
credentials = pika.PlainCredentials('login-to-remote', 'pass') 
connection = pika.BlockingConnection(
        pika.ConnectionParameters(host=NEW_TASK_HOST_IP)) 
channel = connection.channel() 

channel.queue_declare(queue='task_queue', durable=True) 
print(' [*] Waiting for messages. To exit press CTRL+C') 

def callback(ch, method, properties, body): 
    ch.basic_ack(delivery_tag = method.delivery_tag) 

channel.basic_qos(prefetch_count=1) 
channel.basic_consume(callback, 
         queue='task_queue') 

그리고 여기에 새 작업입니다 :

#!/usr/bin/env python 
import pika, sys 
WORKER_IP = '192.168.0.3' 
credentials = pika.PlainCredentials('login-to-remote', 'pass') 
connection = pika.BlockingConnection(pika.ConnectionParameters(
     host=WORKER_IP, socket_timeout=300, credentials=credentials)) 
channel = connection.channel() 

channel.queue_declare(queue='task_queue', durable=True) 

message = ' '.join(sys.argv[1:]) or "Hello World!" 
channel.basic_publish(exchange='', 
         routing_key='task_queue', 
         body=message, 
         properties=pika.BasicProperties(
         delivery_mode = 2, # make message persistent 
        )) 
print(" [x] Sent %r" % message) 
connection.close() 

내가 명령으로 두 호스트에 두 명의 사용자를 만들었습니다

sudo rabbitmqctl add_user login-to-remote pass 

을 때 내가 내가 가지고있는 무엇이든을 달리는 것을 시도하십시오 :

012 37,962,524,

나는 두 방향에서 UDP와 TCP 모두 iperf와 호스트 사이의 연결을 확인했습니다

iperf -s -p 5672 
iperf -p 5672 -c 192.168.0.2 

그래서 교통이 간다.

자, 그럼 문제가 될 수 있습니까?

답변

1
connection = pika.BlockingConnection(
        pika.ConnectionParameters(host='new-task-host-ip')) 

. 
. 
. 

connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='worker-ip', socket_timeout=300, credentials=credentials)) 

'new-task-host-ip''worker-ip' 유효하지 않은 IP 주소입니다. 이를 실제 호스트의 IP 주소 (대체로 'localhost' 또는 '127.0.0.1)로 대체해야합니다.

+0

예, 이것은 물론 그 문자열 대신 실제 IP가 있습니다. 명확성을 위해이 문자열을 IP로 변경합니다. – Kirill

+0

@Kirill이 질문은 네트워크가 아니라 프로그래밍에 관한 것입니다. 방화벽 설정, 관련이있는 경우 포트 포워딩 등을 확인하십시오. – DeepSpace

+0

RabbitMQ 포트에 대해 iperf와의 연결을 점검했는데 문제가 없습니다. – Kirill