How to connect pika to rabbitMQ remote server? (python, pika)

Eriel Marimon picture Eriel Marimon · Jan 6, 2015 · Viewed 23.9k times · Source

In my local machine I can have:

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))

for both scripts (send.py and recv.py) in order to establish proper communication, but what about to establish communication from 12.23.45.67 to 132.45.23.14 ? I know about all the parameters that ConnectionParameters() take but I am not sure what to pass to the host or what to pass to the client. It would be appreciated if someone could give an example for host scrip and client script.

Answer

HyperActive picture HyperActive · Jun 12, 2016

first step is to add another account to your rabbitMQ server. To do this in windows...

  1. open a command prompt window (windows key->cmd->enter)
  2. navigate to the "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.2\sbin" directory ( type "cd \Program Files\RabbitMQ Server\rabbitmq_server-3.6.2\sbin" and press enter )
  3. enable management plugin (type "rabbitmq-plugins enable rabbitmq_management" and press enter)
  4. open a broswer window to the management console & navigate to the admin section (http://localhost:15672/#/users with credentials "guest" - "guest")
  5. add a new user (for example "the_user" with password "the_pass"
  6. give that user permission to virtual host "/" (click user's name then click "set permission")

Now if you modify the connection info as done in the following modification of send.py you should find success:

#!/usr/bin/env python
import pika

credentials = pika.PlainCredentials('the_user', 'the_pass')
parameters = pika.ConnectionParameters('132.45.23.14',
                                   5672,
                                   '/',
                                   credentials)

connection = pika.BlockingConnection(parameters)

channel = connection.channel()

channel.queue_declare(queue='hello')

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

Hope this helps