Manish
Manish

Reputation: 179

Connection Error while sending message to RabbitMQ server on EC2

I have my RabbitMQ Server running on AWS EC2 I have run the producer and consumer code locally. It is working. I am able to access the rabbitMQ management web app as well.

When I am trying to push data from my laptop to EC2 I am getting this error on this line:

 connection = pika.BlockingConnection(pika.ConnectionParameters('xx.xx.xx.xx',5672,'/',credentials)) 

File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 339, in init self._process_io_for_connection_setup() File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 374, in _process_io_for_connection_setup self._open_error_result.is_ready) File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output raise exceptions.ConnectionClosed() pika.exceptions.ConnectionClosed

where xx.xx.xx.xx: public IP address of my instance

Pls tell me, if I am using the correct parameters. What should be the IP address , virtual hostname. I have checked the credentials , the user that I am using exists and it has the rights to access '/' virtual host

I have made the needed changes in the Security Groups. This is a screenshot of it:

enter image description here

When I am running the same producer code from within the instance it's working properly. No Exceptions and the consumer is able to receive it as well.

This is my complete code for reference:

import pika
print("Start")
credentials=pika.PlainCredentials('manish','manish')#RabbitMQ user         created on EC2
   connection=pika.BlockingConnection(pika.ConnectionParameters('xx.xx.xx.xx',5672,'/',credentials)) 
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()

Upvotes: 0

Views: 960

Answers (1)

Rahul Jaiswal
Rahul Jaiswal

Reputation: 1

I tried socket_timeout and it worked for me, you could try something like :

credentials = pika.PlainCredentials('username,'password')
connection = pika.BlockingConnection(pika.ConnectionParameters('hostname',port,'virtual host',credentials,**socket_timeout=10000**))

Upvotes: 0

Related Questions