node.js整合rebbitmq(amqplib)
1.回调函数示例
var q = 'tasks'; var rabbitmq= { hostname:"192.168.206.134", port:"5672", username:"admin", password:"123456", authMechanism: "AMQPLAIN" , pathname:"/", ssl: { enabled : false } } function bail(err) { console.error(err); process.exit(1); } // Publisher function publisher(conn) { conn.createChannel(on_open);//创建信道 function on_open(err, ch) { if (err != null) bail(err); ch.assertQueue(q);//声明一个队列 ch.sendToQueue(q, Buffer.from('something to do'));//发送到队列 } } // Consumer function consumer(conn) { var ok = conn.createChannel(on_open); function on_open(err, ch) { if (err != null) bail(err); ch.assertQueue(q); ch.consume(q, function(msg) {//消费此队列消息 if (msg !== null) { console.log(msg.content.toString()); ch.ack(msg); } }); } } require('amqplib/callback_api') .connect(rabbitmq, function(err, conn) {//创建连接 if (err != null) bail(err); consumer(conn); publisher(conn); });
2.Promise示例
var q = 'tasks'; var rabbitmq= { hostname:"192.168.206.134", port:"5672", username:"admin", password:"123456", authMechanism: "AMQPLAIN" , pathname:"/", ssl: { enabled : false } } var open = require('amqplib').connect(rabbitmq); // Publisher open.then(function(conn) { return conn.createChannel(); }).then(function(ch) { return ch.assertQueue(q).then(function(ok) { return ch.sendToQueue(q, Buffer.from('something to do')); }); }).catch(console.warn); // Consumer open.then(function(conn) { return conn.createChannel(); }).then(function(ch) { return ch.assertQueue(q).then(function(ok) { return ch.consume(q, function(msg) { if (msg !== null) { console.log(msg.content.toString()); ch.ack(msg); } }); }); }).catch(console.warn);