Radomir
Radomir

Reputation: 159

Add rabbitmq to Docker: Error: connect ECONNREFUSED 192.168.80.2:5672

When run command docker compose up -d --build and check logs of gateway service then get an error

Error: connect ECONNREFUSED 192.168.80.2:5672 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1229:16) { errno: -111, code: 'ECONNREFUSED', syscall: 'connect', address: '192.168.80.2', port: 5672 }

docker:

 message_broker:
    image: rabbitmq:3.10-management-alpine
    hostname: rabbitmq
    restart: unless-stopped
    volumes:
      - message_broker_data:/var/lib/rabbitmq
    ports:
      - 15672:15672
    networks:
      - tms

 gateway:
    container_name: gateway
    stdin_open: true
    tty: true
    build:
       context: ./micro_services/gateway
       dockerfile: Dockerfile
    depends_on:
       - storage
    volumes:
       - ./micro_services/gateway/src/:/app/src/
       - ./micro_services/gateway/public/:/app/public/
       - tms_logs:/var/log/gateway
    environment:
       PORT: 3000
       STORAGE_URL: 'http://storage:3000'
       LOGS_PATH: '/var/log/gateway'
    ports:
       - '3000:3000'
    networks:
       - tms

and i use amqplib

module.exports = async () => {
    try {
const queue = 'tasks'
const conn = await amqplib.connect('amqp://message_broker:5672')

Upvotes: 0

Views: 197

Answers (1)

Radomir
Radomir

Reputation: 159

I add something like it

async function connectWithRetry(url, options) {
   let retries = options.retries
   let delay = options.delay
   let lastError

   while (retries > 0) {
     try {
  const conn = await amqplib.connect(url)
  return conn
} catch (error) {
  lastError = error
  console.log(`Connection failed. Retries left: ${retries}`)
  await sleep(delay)
  retries--
  }
}

throw lastError
}

  function sleep(ms) {
    return new Promise((resolve) => setTimeout(resolve, ms))
 }

or the simple way is

 setTimeout(async () => {
    await initAmqp() // in this func a logic from amqp
    console.log('message brocker started successfully')
  }, 10000)

Upvotes: 1

Related Questions