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!')
 | 
			
		||||
} 
 | 
			
		||||
exports.hello = function() {
 | 
			
		||||
    alert('Hello Coder!')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  prxrmq: require('./impl/prxrmq')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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"
 | 
			
		||||
  },
 | 
			
		||||
  "author": "likeagle <likeagle@163.com>",
 | 
			
		||||
  "license": "MIT"
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "amqplib": "^0.5.5"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user