基于 RubbitMQ 的 node 微服务框架

网友投稿 938 2022-10-22

基于 RubbitMQ 的 node 微服务框架

基于 RubbitMQ 的 node 微服务框架

基于 node 的RabbitMQ 消息处理为微服务

基于 node 的简单 接收和发送 RabbitMQ消息

Sequelize: 数据库ORM框架 使用手册

amqplib:

目录结构

.├── config.js # 配置文件├── controllers # 业务逻辑代码│   └── member.js├── db.js # 数据库配置├── logs # 日志文件夹├── models # 模型文件夹(数据库表对应模型)│   └── member.js├── package.json├── package-lock.json├── README.md└── workers # 具体的 worker文件, 每个 worker 独立运行 └── member-worker.js

worker 接收消息示例

const amqp = require('amqplib/callback_api');const config = require('../config');amqp.connect(config.rabbitMQ.url, { automatically_recover: false }, (err1, conn) => { conn.createChannel((err2, ch) => { const queue = 'test1'; // persistent: true 让发送的消息也是持久化的 ch.assertQueue(queue, {durable: true}); //durable: true 开启消息持久化 当一个RabbitMQ服务退出或者中断的情况下,任务队列里面的消息不会丢失 ch.prefetch(1); // 指定某个worker同时最多只会派发到1个任务,一旦任务处理完成发送了确认通知,才会有新的任务派发过来。 console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue); ch.consume(queue, (msg) => { console.log(" [x] Received %s"); console.log(msg); console.log( msg.content.toString()); // 你的业务逻辑 setTimeout(() => { console.log(" [x] Done"); ch.ack(msg); // 消费完成确认 }, 1000); }, {noAck: false}); // noAck: false-开启消息确认,如果没有向RabbitMQ发送消息确认这个ack的标识,这个时候RabbitMQ会将它从新加入到队列中 });})

启动说明

$ npm install#开发模式$ node ./workers/member-worker.js # 生产模式 $ pm2 start ./workers/member-worker.js # 生产模式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【容器云架构】Kubernetes网络解决方案的比较
下一篇:关于@Query注解的用法(Spring Data JPA)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~