创建receive.js文件,内容如下:
let amqp = require('amqplib/callback_api');
/**一个队列即一个服务**/
amqp.connect('amqp://localhost', function(err, conn) {
/**队列01**/
//启动接收队列
conn.createChannel(function(err, ch) {
let q = 'queue01';
//设置队列持久化类型
ch.assertQueue(q, {durable: false});
console.log('队列'+`${q}`+'启动成功;等待获取信息', q);
//开始接收队列内容
ch.consume(q, function (msg) {
console.log("队列"+`${q}`+"收到的信息:", msg.content.toString());
//获取JSON格式内容中的参数
if (JSON.parse(msg.content.toString()).b==="启动服务"){
console.log("成功启动")
require("E:/untitled/bin/bookshelf/连接数据库/Start")//启动其他服务
console.log("传入配置信息")
console.log("配置信息:"+JSON.parse(msg.content.toString()).a);//获取JSON中a的值
}
},{noAck: true});
});
/**队列02**/
conn.createChannel(function(err, ch) {
let q = 'queue02';
ch.assertQueue(q, {durable: false});
console.log('队列'+q+'启动成功;等待获取信息', q);
ch.consume(q, function(msg) {
console.log("队列"+q+"收到的信息:", msg.content.toString());
}, {noAck: true});
});
});
创建send.js文件(同一个项目或其他项目均可),内容如下:
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function(err, conn) {
let message = '{"a":"配置信息获得","b":"启动服务"}'
/**延迟发送**/
conn.createChannel(function(err, ch) {//队列01
let q = 'queue01';
// var msg = '获取队列01消息';
let msg = message;
function sleep() {
setTimeout(function () {
ch.assertQueue(q, {durable: false});
// conn.close();
// process.exit(0)
let buf = new Buffer(msg)//序列化
ch.sendToQueue(q, buf );//向队列中发送序列化后的信息
console.log("队列"+`${q}`+"发送信息:", msg);
sleep()//调用外部sleep方法
}, 2000);
}
sleep()
});
conn.createChannel(function(err, ch) {//队列02
var q = 'queue02';
var msg = '获取队列02消息';
ch.assertQueue(q, {durable: false});
ch.sendToQueue(q, Buffer.from(msg));
console.log("队列02发送信息:", msg);
});
setTimeout(function() {conn.close(); process.exit(0) }, 500);
});