Midway.js 使用RabbitMQ的使用过程
前言
这段时间在做公司的一个项目,这个项目是基于midway.js为架构的一个项目。 主要是基于typescript的一个nodejs的web框架。 因为要用到rabbitmq,所以,在midway官网上调试了rabbitmq相关的demo,发现demo会出现生成者能够正常生产消息,但是消费者订阅后并没有收到生产者发出的消息的bug,所以经过我的的思考和查阅了相当大的一部分资料,顺利的吧把demo跑通了。以下就是我解决的一下方法和思路。
- 安装
前提是已经部署好了rabbitmq服务和midway
1.1 安装依赖
1 | ruby复制代码$ cnpm i @midwayjs/rabbitmq amqplib --save |
1.2 创建服务要使用的文件
以上 server/index.js 消费者 用来监听rabbitmq中的队列, 直接用node运行
src/consumer/userConsumer.ts 不过没有用到这个文件
src/service/rabbitmq.ts rabbitmq服务
src/controller/home.ts 本身文件就有, 用这个文件来发起请求
src/config 配置文件,配置rabbitmq的链接信息
- 使用
server/index.js
1 | javascript复制代码const amqp = require("amqplib/callback_api") |
src/consumer/userConsumer.ts
1 | 复制代码没啥用,现在这里埋个坑 |
src/service/rabbitmq.ts
这里我没有根据官方的demo去写,自己重新定义了一个类
1 | kotlin复制代码import {Provide, Scope, ScopeEnum, Init, Config} from "@midwayjs/decorator"; |
src/controller/home.ts
1 | kotlin复制代码 |
src/config/config.default.ts
1 | arduino复制代码export default (appInfo: EggAppInfo) => { |
- 注意点
3.1 配置文件不要忘记写
3.2 监听队列的文件可以直接用js写
- 测试
4.1 启动服务
1 | arduino复制代码npm run dev |
4.2 根据控制器访问路径
4.3 进入的Server目录下执行消费者服务的代码
1 | 复制代码 node index.js |
本文转载自: 掘金