Reputation: 159
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
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