当前位置: 首页 > 知识库问答 >
问题:

如何使用docker-nodejs运行RabbitMQ使用者[重复]

元俊雅
2023-03-14
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
                

这种方法很不一致。我肯定这不是实现这一点的正确方法。

共有1个答案

贺子昂
2023-03-14

在您的nodejs代码中,如果rabbitmq容器无法访问,您可以添加一个特性来终止退出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应用程序将无法启动,并重新启动,直到rabbitmq容器就绪。

将rabbitmq连接建立作为nodejs应用程序的第一个操作之一是值得的--因此,如果没有rabbitmq,什么都不会启动。

 类似资料:
  • 我有一个PHP应用程序,使用RabbitMQ。为了实现冗余,我创建了一对RabbitMQ服务器,并将它们连接到一个集群中。我也有一个VyOS故障转移群集运行HAProxy负载平衡连接,并在故障转移的情况下提供重新路由。 昨天,我们的VyOS集群决定需要故障转移(可能是短暂的网络中断)。在一个VyOS上停止了HA代理,虚拟IP被移动,并在另一个节点上重新启动HA代理。 之后,我查看了Rabbit中的

  • 我在可靠性模式中使用AMQP,我的用例是将消息放入队列中,然后消费它们并将信息插入web服务中。我的web服务很慢,我的队列可能有很多很多消息,我希望确保消费者不会杀死我的数据库。 在RabbitMQ中是否有一种内建的方式来执行节流,或者是基于时间的(每分钟/秒/小时仅有X条消息),或者是某种其他机制?

  • 问题内容: 我需要在docker容器中同时使用java和python来运行一些代码。 这是我的dockerfile:如果我不添加 FROM openjdk:slim,* 它将正常运行 * test.py应用程序位于同一目录中: 我收到此错误: 我到底在做什么错?我是Docker的新手,也许我错过了一步。 额外细节 我的目标 我必须运行一个运行Java文件的python程序。我正在使用的python

  • 问题内容: 在互联网上其他任何地方都找不到有效的答案后,我将提交此“自问自答”教程 如何从脚本上运行一个简单的进程?我的代码在本地计算机上运行良好,但是尝试在Lambda上运行时遇到了其他问题。 问题答案: 这是一个简单过程的完整代码示例,以形式启动 。 它也可以在github上找到。 index.js phantom-script.js 要获取可与Amazon Linux机器一起使用的Phant

  • 我有一个docker映像,它有所有需要的文件,当我说docker运行时,我希望它将docker映像中的文件夹的内容复制到主机目录。之后不再需要docker并停止

  • 可以使用atom nodejs安装运行nodejs脚本吗? 例如,我使用以下命令行运行脚本: 我想知道是否有一种方法可以做到这一点,而无需单独安装nodejs。