将RabbitMQ添加到Docker中:错误:连接ECONNREFUSED 192.168.80.2:5672

huangapple go评论89阅读模式
英文:

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

问题

当运行命令docker compose up -d --build并检查网关服务的日志时,出现错误

错误: 连接ECONNREFUSED 192.168.80.2:5672
在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

并且我使用了amqplib

module.exports = async () => {
try {
const queue = 'tasks'
const conn = await amqplib.connect('amqp://message_broker: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:

  1. message_broker:
  2. image: rabbitmq:3.10-management-alpine
  3. hostname: rabbitmq
  4. restart: unless-stopped
  5. volumes:
  6. - message_broker_data:/var/lib/rabbitmq
  7. ports:
  8. - 15672:15672
  9. networks:
  10. - tms
  11. gateway:
  12. container_name: gateway
  13. stdin_open: true
  14. tty: true
  15. build:
  16. context: ./micro_services/gateway
  17. dockerfile: Dockerfile
  18. depends_on:
  19. - storage
  20. volumes:
  21. - ./micro_services/gateway/src/:/app/src/
  22. - ./micro_services/gateway/public/:/app/public/
  23. - tms_logs:/var/log/gateway
  24. environment:
  25. PORT: 3000
  26. STORAGE_URL: 'http://storage:3000'
  27. LOGS_PATH: '/var/log/gateway'
  28. ports:
  29. - '3000:3000'
  30. networks:
  31. - tms

and i use amqplib

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

答案1

得分: 1

以下是翻译好的部分:

  1. 我添加类似以下内容的代码
  2. async function connectWithRetry(url, options) {
  3. let retries = options.retries
  4. let delay = options.delay
  5. let lastError
  6. while (retries > 0) {
  7. try {
  8. const conn = await amqplib.connect(url)
  9. return conn
  10. } catch (error) {
  11. lastError = error
  12. console.log(`连接失败。剩余重试次数:${retries}`)
  13. await sleep(delay)
  14. retries--
  15. }
  16. }
  17. throw lastError
  18. }
  19. function sleep(ms) {
  20. return new Promise((resolve) => setTimeout(resolve, ms))
  21. }
  22. 或者简单的方式是
  23. setTimeout(async () => {
  24. await initAmqp() // 在这个函数中包含来自amqp的逻辑
  25. console.log('消息代理成功启动')
  26. }, 10000)
英文:

I add something like it

  1. async function connectWithRetry(url, options) {
  2. let retries = options.retries
  3. let delay = options.delay
  4. let lastError
  5. while (retries > 0) {
  6. try {
  7. const conn = await amqplib.connect(url)
  8. return conn
  9. } catch (error) {
  10. lastError = error
  11. console.log(`Connection failed. Retries left: ${retries}`)
  12. await sleep(delay)
  13. retries--
  14. }
  15. }
  16. throw lastError
  17. }
  18. function sleep(ms) {
  19. return new Promise((resolve) => setTimeout(resolve, ms))
  20. }

or the simple way is

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

huangapple
  • 本文由 发表于 2023年6月30日 05:06:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/76584609.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定