service-modules
用于服务公共中间件(RabbitMQ、Redis、Mongoose等)使用consul配置一键初始化,
Usage
install
npm install service-modules --save
init with consul
- 从 consul 获取各中间件的基础配置,并初始化连接
- 仅 MQ 需要传入部分队列信息参数初始化
const Middleware = ;let middleware = mq: exchange: 'exc' queueMap: funcMap: ;const consul = middleware;
- 初始化
Middleware
类后,middleware
包含四个基本属性:
mq
: MQ 模块,包含连接到 consul 中 mq 配置的connection
,以及发送/接收消息接口mongo
:mongoose
对象,redis
: Redis 模块,包含连接到 consul 中 redis 配置 的ioredis
对象,以及部分 redis 操作接口log
: Log 模块,log4js
的基本配置初始化, 默认输出日志级别为debug
Middleware(options)
- options:
-
mq
: mq 监听消息队列所需的参数, 必选exchange
: 交换机queueMap
: 队列表funcMap
: 消息处理函数表
-
redis
: redis 订阅参数, 默认不打开订阅服务openSub
: 开启标志, 默认为false
subChannel
: 订阅通道onMessage
: 消息处理回调
-
log
: 日志参数level
: 日志等级, 默认为debug
{console;// handling messages}let middleware =mq: mqInforedis:openSub: truesubChannel: 'test'onMessage: onMessagelog:level: 'debug';
-
middleware.initWithConsul(initParams)
返回consul对象,封装有三个api
- initParams:
host
: consul 服务器ipport
: consul 服务器端口,默认 8500regService
: 服务注册到consul的信息, 使用官方数据结构, 具体参数详见官方文档,这里不做赘述mqKey
: mq 的 ip、port等配置信息, 默认为''
, 不会初始化redisKey
: redis 的 ip、port等配置信息, 默认为''
, 不会初始化mongoKey
: mongodb 的 ip、port等配置信息, 默认为''
, 不会初始化
error events
使用事件监听机制抛出回调函数中不能捕捉的错误:
mq
: amqp 建立连接过程中的错误redis
: redis 建立连接过程中的错误mongo
: mongodb 建立连接过程中的错误consul
: consul 监听键变化时的错误
// listen on err of middlewaremiddleware;middleware;middleware;middleware;
api
mq api
- 监听队列
需要初始化 MQ 队列 Map queueMap
和 消息处理 Map funcMap
// listeningmq.receive ; ; /** async notice */ /* rpc function */
- 发送异步消息
mq;
- 发送同步消息
mq;
- 回复同步消息到指定队列
mq;
consul api
- 设置键内容
await consul;
- 查询键值
const res = await consul;console; // { hello: 'world' }
- 监听键变化
consul; { console;}
redis api
采用 scan 命令扫描所有 key
- 查询所有键列表
const keys = await redis;
- 删除所有键
const keys = await redis;