aliyun ons http plugin for egg
$ npm i egg-ons-http --save
// {app_root}/config/plugin.js
exports.onsHttp = {
enable: true,
package: 'egg-ons-http',
};
// {app_root}/config/config.default.js
exports.ons = {
default: {
accessKey: 'your-accessKey',
secretKey: 'your-secretKey',
instanceId:'', // 公网实例不要填,会报权限问题
// onsAddr: 'http://.mqrest.cn-qingdao-public.aliyuncs.com', // 使用http接入地址
},
sub: [{
consumerGroup: 'your-consumer-group',
topics: [
'your-topic',
],
}],
pub: [{
topics: [
'your-topic',
],
}],
};
see config/config.default.js for more detail.
put your subscription codes under the folder {app_root}/app/ons
and named as the topic name e.g TP_NAME.js
.
├── app
│ ├── ons
│ │ └── TP_NAME.js
│ ├── public
│ └── router.js
├── config
│ └── config.default.js
├── package.json
you should implment a subscriber as blow
// TP_NAME.js
'use strict';
class TestSubscriber {
constructor(ctx) {
this.ctx = ctx;
}
async subscribe(msg) {
await this.ctx.service.messageService.process(msg);
}
static get subExpression() {
return 'TagA';
}
}
module.exports = TestSubscriber;
see RPC for more detail.
using app.ons / ctx.ons
to create & send messages
const Message = ctx.ons.Message;
const msg = new Message('TP_NAME', // topic
'TagA', // tag
'Hello ONS !!!' // body
);
const sendResult = yield ctx.ons.send(msg);