| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /**
- * Created by zhang on 2019/5/5.
- */
- let amqp = require('amqplib');
- class RabbitMQ{
- constructor(connect){
- this.connect = connect;
- }
- static async connection(URL){
- if(!RabbitMQ.instance){
- RabbitMQ.instance = new RabbitMQ(await amqp.connect(URL)) //'amqp://13726297388:123456@qa.smartcost.com.cn:5672'
- }
- return RabbitMQ.instance
- }
- static async sendMessage(queue,msg,durable=false){
- if(RabbitMQ.instance){
- let ch = await RabbitMQ.instance.connect.createChannel();
- try {
- await ch.assertQueue(queue, {durable: durable});
- ch.sendToQueue(queue,Buffer.from(msg),{persistent: durable});
- console.log(" Sent %s to :"+queue, msg);
- ch.close();
- }catch (e){
- console.log(e);
- ch.close();
- }
- }
- }
- static async receiveMessage(queue,callback,durable=false){
- if(RabbitMQ.instance){
- let ch = await RabbitMQ.instance.connect.createChannel();
- try {
- await ch.assertQueue(queue, {durable: durable});
- ch.prefetch(1);
- console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);
- ch.consume(queue, function(msg) {
- console.log(" [x] Received %s", msg.content.toString());
- if(durable == true) ch.ack(msg);
- if(callback) callback(msg)
- }, {
- noAck: !durable
- });
- }catch (e){
- console.log(e);
- ch.close();
- }
- }
- }
- }
- export default RabbitMQ;
|