锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产亚洲一区二区三区,国产高清一区,四虎亚洲精品http://www.aygfsteel.com/fanjs2000/category/52974.htmlzh-cnThu, 30 Jan 2014 06:37:53 GMTThu, 30 Jan 2014 06:37:53 GMT60ServiceRoute.jshttp://www.aygfsteel.com/fanjs2000/archive/2014/01/06/408550.html鐚溂鐫?/dc:creator>鐚溂鐫?/author>Mon, 06 Jan 2014 02:57:00 GMThttp://www.aygfsteel.com/fanjs2000/archive/2014/01/06/408550.html
[root@f2c node_work]# cat ServiceRoute.js
/*************************
* 鏈嶅姟璺敱鎺ュ彛
* @author
*
**************************/
var http = require('http'),
        url = require('url'),
        amqplib = require('amqplib'),
        async = require('async'),
        uuid = require('node-uuid');

var open = require('amqplib').connect('amqp://10.0.16.101:5672');
http.createServer(function(req, res){
        /*** 鍙傛暟鍒ゆ柇 ***/
        var param = url.parse(req.url).query;
        if(param==null || param=="") {
                res.writeHead(200, {'Content-Type':'text/html'});
                res.write("no message", 'utf8');
                res.end();
        }
        else {
                /*** 鍙傛暟澶勭悊 ***/
                console.log("*****************start*******************");
                var paramArr = param.split("&");
                var messageInfo = paramArr[0].split("=");
                var queueName = messageInfo[0];
                var b = new Buffer(messageInfo[1], 'base64');
                var mes = b.toString();
                console.log("*param="+new Date().toLocaleString());
                console.log("*param="+param);
                console.log("*request message = "+mes);
                var callBackInfo = null;
                if(paramArr.length>=2) callBackInfo = paramArr[1].split("=");
                /*** 榪斿洖闃熷垪 ***/
                var uuIdStr = uuid.v1()+"_a";
                var common_options = {durable: false, autoDelete:true, exclusive:true};
                /*** 鎺ユ敹娑堟伅 ***/
                open.then(function(conn){
                        var  ok = conn.createChannel();
                        ok = ok.then(function(ch){
                                ch.assertQueue(uuIdStr, common_options);

                                var onSecond = 1000 * 1;
                                var timer=setTimeout(function(){
                                        console.log("*setTimeOut");
                                        res.write('{"s":-1, "error":"channel connect time out"}', 'utf8');
                                        ch.close();
                                }, onSecond);

                                ch.consume(uuIdStr, function(msg) {
                                        console.log("*response="+msg.content.toString());
                                        ch.close();
                                        clearTimeout(timer)
                                        /*** 榪斿洖淇℃伅鍒板鎴風 ***/
                                        if(callBackInfo!=null)
                                                res.write(callBackInfo[1]+"('"+msg.content.toString().replace("'", "\'")+"')", 'utf8');
                                        else
                                                res.write(msg.content.toString(), 'utf8');
                                        res.end();
                                });
                                ch.on("error", function(err){
                                        console.log("*response error="+err);
                                });
                                ch.on("close", function(){
                                        console.log("*response close method is called");
                                });

                        });
                }).then(null, console.warn);
                /*** 鍙戦佹秷鎭?***/
                open.then(function(conn) {
                var ok = conn.createChannel();
                ok = ok.then(function(ch){
                                ch.sendToQueue(queueName, new Buffer(mes), {correlationId:uuIdStr});
                                ch.close();
                                ok.then(ok.close.bind(ok));
                        });
                }).then(null, console.warn);

        }
}).listen(8081);


]]>
主站蜘蛛池模板: 崇文区| 当雄县| 武邑县| 浑源县| 灌南县| 西平县| 霍林郭勒市| 盐池县| 扶绥县| 新化县| 西城区| 高阳县| 喜德县| 娄烦县| 方正县| 泰兴市| 永定县| 七台河市| 宁陵县| 益阳市| 济阳县| 大邑县| 荔浦县| 井冈山市| 卫辉市| 成都市| 临安市| 贵南县| 罗甸县| 静海县| 板桥市| 北流市| 手游| 淮滨县| 佛冈县| 彭阳县| 新河县| 中超| 巴彦县| 嘉善县| 南城县|