1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/myn_wsc-seckill

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
seckillService.js 2.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
VincentWuShiChao Отправлено 14.12.2018 09:26 8e3f997
var express=require("express"),
redis=require("redis"),
kafka=require('kafka-node'),
Producer=kafka.Producer,
kafkaClient=new kafka.Client(),
producer=new Producer(kafkaClient);
count=0;
app=express();
config=require("./config/redis.json");
var bodyParser=require('body-parser');
app.use(express.json());
app.use(bodyParser.json({limit: '1mb'})); //body-parser 解析json格式数据
app.use(bodyParser.urlencoded({ //此项必须在 bodyParser.json 下面,为参数编码
extended: true
}));
app.all("*", function (req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.setHeader("X-Powered-By",' 3.2.1');
next();
});
app.post('/seckill',function(req,res){
console.log('count='+count++);
let fn=function(optionalClient){
let client;
if(optionalClient=='undefined'||optionalClient==null){
client=redis.createClient(config);
}else{
client=optionalClient;
}
client.on('error',function(er){
console.trace('Here I am');
console.error(er.stack);
client.end(true);
});
client.watch("counter");
client.get("counter",function(err,reply){
if(parseInt(reply)>0){
let multi=client.multi();
multi.decr('counter');
multi.exec(function(err,replies){
if(replies==null){
console.log("counter被使用");
fn(client);
}else{
var args = {
openid: 'b05NZ2Y1WjbE9fRV9MZTBWWQ==',
seckillTime: '2018-12-12 00:00:01',
}
let payload=[{
topic:'CAR_NUMBER',
messages:[JSON.stringify(args)],
key:"seckill",
partition:0
}];
console.log("payload:",payload);
producer.send(payload,function(err,data){
console.log(data);
});
res.send(replies);
client.end(true);
}
})
}else{
console.log("已经卖光了");
res.send("已经卖光了");
client.end(true);
}
});
}
fn(null);
});
app.listen(8888, "0.0.0.0",function () {
console.log(`Please link connectorServer http://localhost:8888`);
});

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/myn_wsc-seckill.git
git@api.gitlife.ru:oschina-mirror/myn_wsc-seckill.git
oschina-mirror
myn_wsc-seckill
myn_wsc-seckill
master