Add prxrmq
This commit is contained in:
parent
308c0f8af1
commit
0ddd6dd8c6
67
utils/impl/prxrmq.js
Normal file
67
utils/impl/prxrmq.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const amqplib = require('amqplib');
|
||||||
|
|
||||||
|
function RabbitMQPrx(conf) {
|
||||||
|
this.param = {
|
||||||
|
protocol: 'amqp',
|
||||||
|
hostname: conf.host,
|
||||||
|
port: conf.port,
|
||||||
|
username: conf.user,
|
||||||
|
password: conf.passwd,
|
||||||
|
frameMax: 0,
|
||||||
|
heartbeat: 0,
|
||||||
|
vhost: conf.vhost
|
||||||
|
};
|
||||||
|
|
||||||
|
this.amqp = amqplib.connect(this.param);
|
||||||
|
|
||||||
|
this.produces = {};
|
||||||
|
this.consumes = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
RabbitMQPrx.prototype.initProduce = async function(excName, excType, excArgs = {}) {
|
||||||
|
let produce = {};
|
||||||
|
produce.channel = await this.amqp.then(function (conn) {
|
||||||
|
return conn.createChannel().then( function(channel) {
|
||||||
|
return channel.assertExchange(excName, excType, excArgs).then(function(){
|
||||||
|
return channel;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.produces[excName] = produce;
|
||||||
|
};
|
||||||
|
|
||||||
|
RabbitMQPrx.prototype.initConsume = async function(excName, excType, excArgs, queueName, queueArgs, routeKey, cb) {
|
||||||
|
let consumer = {};
|
||||||
|
consumer.channel = await this.amqp.then(function (conn) {
|
||||||
|
return conn.createChannel().then( function(channel) {
|
||||||
|
let ret = channel.assertExchange(excName, excType, excArgs);
|
||||||
|
ret = ret.then(function () {
|
||||||
|
return channel.assertQueue(queueName, queueArgs);
|
||||||
|
});
|
||||||
|
ret = ret.then(function(qok) {
|
||||||
|
for (let n in routeKey) {
|
||||||
|
if (routeKey.hasOwnProperty(n))
|
||||||
|
channel.bindQueue(qok.queue, excName, routeKey[n]);
|
||||||
|
}
|
||||||
|
return qok.queue;
|
||||||
|
});
|
||||||
|
|
||||||
|
ret = ret.then(function(queue) {
|
||||||
|
return channel.consume(queue, cb, {noAck: true});
|
||||||
|
});
|
||||||
|
|
||||||
|
return ret.then(function() {
|
||||||
|
return channel;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.consumes[excName] = consumer;
|
||||||
|
};
|
||||||
|
|
||||||
|
RabbitMQPrx.prototype.publish = function(excName, routeKey, msg) {
|
||||||
|
this.produces[excName].channel.publish(excName, routeKey, Buffer.from(msg));
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = RabbitMQPrx;
|
@ -1,6 +1,4 @@
|
|||||||
exports.yo = function() {
|
|
||||||
alert('Yo Coder!')
|
module.exports = {
|
||||||
}
|
prxrmq: require('./impl/prxrmq')
|
||||||
exports.hello = function() {
|
};
|
||||||
alert('Hello Coder!')
|
|
||||||
}
|
|
||||||
|
109
utils/package-lock.json
generated
Normal file
109
utils/package-lock.json
generated
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"name": "@ehason/utils",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"amqplib": {
|
||||||
|
"version": "0.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.5.tgz",
|
||||||
|
"integrity": "sha512-sWx1hbfHbyKMw6bXOK2k6+lHL8TESWxjAx5hG8fBtT7wcxoXNIsFxZMnFyBjxt3yL14vn7WqBDe5U6BGOadtLg==",
|
||||||
|
"requires": {
|
||||||
|
"bitsyntax": "~0.1.0",
|
||||||
|
"bluebird": "^3.5.2",
|
||||||
|
"buffer-more-ints": "~1.0.0",
|
||||||
|
"readable-stream": "1.x >=1.1.9",
|
||||||
|
"safe-buffer": "~5.1.2",
|
||||||
|
"url-parse": "~1.4.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bitsyntax": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
|
||||||
|
"requires": {
|
||||||
|
"buffer-more-ints": "~1.0.0",
|
||||||
|
"debug": "~2.6.9",
|
||||||
|
"safe-buffer": "~5.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bluebird": {
|
||||||
|
"version": "3.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
|
||||||
|
"integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
|
||||||
|
},
|
||||||
|
"buffer-more-ints": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
|
||||||
|
},
|
||||||
|
"core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"isarray": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
},
|
||||||
|
"querystringify": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "1.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||||
|
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"string_decoder": "~0.10.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requires-port": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
||||||
|
},
|
||||||
|
"safe-buffer": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "0.10.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
|
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||||
|
},
|
||||||
|
"url-parse": {
|
||||||
|
"version": "1.4.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
|
||||||
|
"integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
|
||||||
|
"requires": {
|
||||||
|
"querystringify": "^2.1.1",
|
||||||
|
"requires-port": "^1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,5 +7,8 @@
|
|||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
"author": "likeagle <likeagle@163.com>",
|
"author": "likeagle <likeagle@163.com>",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"amqplib": "^0.5.5"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user