沈斌
2017-02-10 4d4d304bf17a790538671efbc9d9702eabb208fa
queue.js
@@ -1,33 +1,23 @@
/**
 * Created by bin.shen on 03/12/2016.
 */
var amqp = require('amqplib/callback_api');
var moment = require('moment');
var uri = 'amqp://guest:guest@121.40.92.176';
var ex = 'ex_data_dev1';
module.exports.publishMessage = function(data) {
    this.pushToMQ('ex_data_dev1', {
        data: data,
        time: moment().format('YYYY-MM-DD HH:mm:ss')
    })
};
module.exports.pushToMQ = function(ex, data) {
    amqp.connect(uri, function(err, conn) {
        conn.createChannel(function(err, ch) {
            ch.assertExchange(ex, 'fanout', { durable: false });
            var message = '{"data": "' + data + '", "time":"' + moment().format('YYYY-MM-DD HH:mm:ss') + '"}';
            ch.publish(ex, '', new Buffer(message));
        });
        setTimeout(function() {
            conn.close();
            //process.exit(0)
        }, 500);
    });
};
module.exports.pushToScreen = function(data) {
    amqp.connect(uri, function(err, conn) {
        conn.createChannel(function(err, ch) {
            var _ex = 'ex_data_screen';
            ch.assertExchange(_ex, 'fanout', { durable: false });
            ch.publish(_ex, '', new Buffer(JSON.stringify(data)));
            ch.publish(ex, '', new Buffer(JSON.stringify(data)));
        });
        setTimeout(function() {
            conn.close();
@@ -35,15 +25,17 @@
    });
};
module.exports.pushToAlarm = function(data) {
module.exports.listenToMQ = function(ex) {
    amqp.connect(uri, function(err, conn) {
        conn.createChannel(function(err, ch) {
            var _ex = 'ex_data_alarm';
            ch.assertExchange(_ex, 'fanout', { durable: false });
            ch.publish(_ex, '', new Buffer(JSON.stringify(data)));
            ch.assertExchange(ex, 'fanout', { durable: false });
            ch.assertQueue('', {exclusive: true}, function(err, q) {
                ch.bindQueue(q.queue, ex, '');
                ch.consume(q.queue, function(msg) {
                    var message = JSON.parse(msg.content);
                    global.configs[message.mac] = message;
                }, { noAck: true });
            });
        });
        setTimeout(function() {
            conn.close();
        }, 500);
    });
};