kirsanv43 kirsanv43 - 1 month ago 22
Node.js Question

Call rabbitmq from nodejs

i have a code

enter image description here

i'm get an error when i try to connect to rabbitmq daemon from nodejs

enter image description here

when i run same code beyond docker then nodejs successfully connect to the server(rabbitmq deamon).

How can i connect from nodejs deamon to rabbitmq deamon?

docker-compose config:
docker-compose-dev.yml

Answer

Here is the thing: If both node app and the rabbitmq run on separate docker containers, they rely on docker networking to reach each other, so node app looks for a rabbitmq instance in the same container, which isn't the case.

RabbitMQ contanier has the port 5672 exposed with a link, which can be reached over the name of the container (according to the standards of docker compose), which means all the exposed ports of that container are available at rabbitmq:. If you change

amqp.connect('amqp://localhost:5672');

into

amqp.connect('amqp://rabbitmq:5672');

You're all good.