简介
klg-mq-koa 是一个基于 koa2 的消息队列中间件,它能够方便的将请求加入消息队列中,并通过固定的 URL 地址获取最终的处理结果。它使用 RabbitMQ 作为消息队列,通过 amqplib 库进行操作。
安装
使用 npm 进行安装:
npm install klg-mq-koa --save
使用方法
初始化
先导入 klg-mq-koa:
const mq = require('klg-mq-koa');
然后通过 RabbitMQ 连接字符串进行初始化:
const mqMid = mq('amqp://localhost');
加入消息队列
router.get('/', async (ctx, next) => { const msg = { hello: 'world' }; const res = await mqMid.publish(msg); ctx.body = res; });
处理消息
在调用 mq 函数时,可以传递一个参数进行消息处理。处理函数必须返回 promise 对象,否则处理将被终止。
-- -------------------- ---- ------- ----- ----- - ---------------------- ----- ----- -------- -- - --------------------- - -------- ---- --------------------- ----- ------ - - ------- ---------- ----- --- -- ----- ----------------- ------ ------- ---
获取处理结果
可以通过 URL 访问 messageId 对应的消息处理结果,以该 URL 为例:http://localhost:3000/queue/fetch/DEMO_952c4de4-4237-4dbc-ae75-aea7f8fb8873
,其中 DEMO_952c4de4-4237-4dbc-ae75-aea7f8fb8873 为消息队列中消息的 messageId。
const mqMid = mq('amqp://localhost'); console.log(await mqMid.fetch('DEMO_952c4de4-4237-4dbc-ae75-aea7f8fb8873'));
示例代码
完整的使用示例代码如下:
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ---------------------- ----- ---------- - -------------------------- ----- -- - ---------------------- ----- --- - --- ------ ----- ------ - --- --------- ----- ----- - ---------------------- ----- ----- -------- -- - --------------------- - -------- ---- --------------------- ----- ------ - - ------- ---------- ----- --- -- ----- ----------------- ------ ------- --- --------------- ----- ----- ----- -- - ----- --- - - ------ ------- -- ----- --- - ----- ------------------- -------- - ---- --- ------------------------------------- ----- ----- ----- -- - ----- ------- - ----- ---------------------------------- -------- - -------- --- --- ------------------ --------------------- ------------------------------ ----------------- ------------------- ------- -- -------------------------
总结
klg-mq-koa 是一个非常方便的消息队列中间件,可以方便地将请求加入消息队列并获取最终的处理结果。它使用 RabbitMQ 作为消息队列,通过 amqplib 库进行操作,处理消息的函数返回 promise 对象。同时,klg-mq-koa 函数也可以不传递处理函数,只进行消息队列的操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/80303