我这里使用的 http url querystring amqplib 这几个模块。
var http = require("http");
var url = require("url");
var querystring = require('querystring');
var amqp = require('amqplib/callback_api');
// 建立MQ连接 amqp://name:passwd@ip:port
amqp.connect('amqp://admin:admin@192.168.128.129:5672', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'test';
ch.assertQueue(q, {durable: true}); // durable 持久
// 创建http服务监听8000端口
http.createServer(function(request, response){
if ('/favicon.ico' == request.url) { return;}
var pathname = url.parse(request.url).pathname;
var arg = url.parse(request.url).query;
var args = querystring.parse(arg);
args = JSON.stringify(args);
// 写入队列
ch.sendToQueue(q, new Buffer(args));
response.writeHead(200, {"Content-Type":"text/plain"});
response.end();
}).listen(8000);
});
});
在压测高并发的情况下,性能【响应、压入队列速率】比PHP用workerman和swoole差很多。
以下为对此Node脚本的测试结果,【服务器配置:1C2G】
ab -n 30000 -c 600 http://127.0.0.1:8000/?a=6

ab -n 200000 -c 1000 http://127.0.0.1:8000/?a=6

网友评论