I am trying to configure separate docker containers for rabbitmq and consumer for container, i.e. A process that will listen on the queue and perform the necessary tasks. I created a yml file and a docker file.
I can run the yml file, however, when I check the docker logs, I see where there are ECONNREFUSED errors.
NewUserNotification.js:
require('seneca')() .use('seneca-amqp-transport') .add('action:new_user_notification', function(message, done) { … return done(null, { pid: process.pid, status: `Process ${process.pid} status: OK` }) .listen({ type: 'amqp', pin: ['action:new_user_notification'], name: 'seneca.new_user_notification.queue', url: process.env.AMQP_RECEIVE_URL, timeout: 99999 });
error message in docker log:
{"notice":"seneca: Action hook:listen,role:transport,type:amqp failed: connect ECONNREFUSED 127.0.0.1:5672.","code": "act_execute","err":{"cause":{"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1", "port":5672},"isOperational":true,"errno":"ECONNREFUSED","code":"act_execute","syscall":"connect","address":"127.0.0.1", "port":5672,"eraro":true,"orig":{"cause":{"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1", "port":5672},"isOperational":true,"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1","port":5672}, "seneca":true,"package":"seneca","msg":"seneca: Action hook:listen,role:transport,type:amqp failed: connect ECONNREFUSED 127.0.0.1:5672.", "details":{"message":"connect ECONNREFUSED 127.0.0.1:5672","pattern":"hook:listen,role:transport,type:amqp","instance":"Seneca/…………/…………/1/3.4.3/-", "orig$":{"cause":{"errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1","port":5672},"isOperational":true, "errno":"ECONNREFUSED","code":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1","port":5672}
sample docker-compose.yml file:
version: '2.1' services: rabbitmq: container_name: "4340_rabbitmq" tty: true image: rabbitmq:management ports: - 15672:15672 - 15671:15671 - 5672:5672 volumes: - /rabbitmq/lib:/var/lib/rabbitmq - /rabbitmq/log:/var/log/rabbitmq - /rabbitmq/conf:/etc/rabbitmq/ account: container_name: "account" build: context: . dockerfile: ./Account/Dockerfile ports: - 3000:3000 links: - "mongo" - "rabbitmq" depends_on: - "mongo" - "rabbitmq" new_user_notification: container_name: "app_new_user_notification" build: context: . dockerfile: ./Account/dev.newusernotification.Dockerfile links: - "mongo" - "rabbitmq" depends_on: - "mongo" - "rabbitmq" command: ["./wait-for-it.sh", "rabbitmq:5672", "-t", "90", "--", "node", "newusernotification.js"]
amqp connection string: (I tried both ways, with and without a user) AMQP: // username: password @RabbitMQ: 5672
I added the link attribute to the docker layout file and specified the name in the .env file (rabbitmq). I tried to run the NewUserNotification.js file from outside the container, and everything started fine. What can cause this problem? Connection string error? Problem setting up Docker-Compose.yml? Other?