如何使用Docker-NodeJS運(yùn)行RabbitMQ使用者

我有一個(gè)使用RabbitMQ的微服務(wù)應(yīng)用程序。如何僅在RabbitMQ啟動并運(yùn)行之后才能從應(yīng)用程序后端容器運(yùn)行RabbitMQ使用者。我的撰寫文件如下。

certichain_backend:
    depends_on:
      - rabbitmq

    working_dir: /app/backend/src 
    command: sh sleep 20 & nohup node /app/backend/src/services/amqp_consumer.js && npm run start;

rabbitmq:
     image: "rabbitmq:3-management"
     hostname: "rabbitmq"
     restart: always
     expose:
       - 15672
       - 5672
     labels:
       NAME: "rabbitmq"
     volumes:
       - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
                

我已經(jīng)將后端的'depends_on'給了rabbitmq。但我觀察到的是,rabbitmq容器啟動過程已經(jīng)啟動。但是后端容器并不等待rabbitmq容器完全啟動。我的消費(fèi)者正在與后端一起運(yùn)行。因此使用者無法連接到amqp服務(wù)器,因?yàn)榇藭r(shí)它沒有運(yùn)行。因此,我添加了一個(gè)sleep參數(shù)。這樣就有時(shí)間讓拉比提出來。

這種方法很不一致。我肯定這不是實(shí)現(xiàn)這一目標(biāo)的正確方法。

? 最佳回答:

在nodejs代碼中,如果rabbitmq容器不可訪問,您可以添加一個(gè)特性來終止進(jìn)程并退出1。

rabbitmq.connect('rabbitmq://guest:guest@rabbitmq',{})
  .then(function(connection){
     console.log('Rabbitmq connection established');
     // other code here
   })
   .catch(function(errror) {
     console.error('%s while dialing rabbitmq', error.message);
     process.exit(1);
   });

在docker-compose文件中,您可以添加restart: on-failure,所以,如果rabbitmq容器還沒有啟動,nodejs應(yīng)用程序?qū)o法啟動并重新啟動,直到rabbitmq容器就緒。

將rabbitmq連接建立作為nodejs應(yīng)用程序執(zhí)行的第一個(gè)操作之一是值得的—因此,如果沒有rabbitmq,就不會啟動任何操作。

公眾號:1024技術(shù)圈

?? 提供互聯(lián)網(wǎng)知識和資訊,分享IT前沿技術(shù),熱門資源,大廠面試題 ??

主站蜘蛛池模板: 日韩一区二区三区免费播放| 国产A∨国片精品一区二区| 丰满岳乱妇一区二区三区| 日本不卡在线一区二区三区视频| 日韩好片一区二区在线看| 高清在线一区二区| 中文字幕AV无码一区二区三区| 99久久精品国产免看国产一区| 美女AV一区二区三区| 精品久久久中文字幕一区| 亚洲综合av一区二区三区不卡| 无码精品人妻一区二区三区人妻斩 | 亚洲一区精品视频在线| 国产AV午夜精品一区二区三区| 精品成人一区二区三区四区| 午夜无码视频一区二区三区| 国产精品一区二区电影| 国产成人高清亚洲一区久久| 精品国产日韩亚洲一区91| 国产精品视频一区| 成人免费视频一区| 福利一区在线视频| 久久久久久一区国产精品| 日韩精品无码人妻一区二区三区 | 精品中文字幕一区在线| 精品久久综合一区二区| 色多多免费视频观看区一区| 福利一区在线视频| 久久精品一区二区三区中文字幕| 国产福利电影一区二区三区,亚洲国模精品一区 | 高清无码一区二区在线观看吞精| 国产一区二区三区在线| 一区二区在线视频免费观看| 99国产精品一区二区| 精品久久一区二区| 国产大秀视频在线一区二区| 国模精品一区二区三区视频| 一区二区高清视频在线观看| 在线观看午夜亚洲一区| 无码国产精品一区二区免费式直播| 国产乱码精品一区二区三区 |