我正在处理大量的包裹以进行追踪。我有mongodb,其中每个用户都有不同的包。目前有20多家公司(tnt、fedex、dhl等),每家公司只允许有限制的单一跟踪或批量跟踪(如tnt=1、fedex=20和dhl=10)。
我试图找到一种方法来排队跟踪作业,它有效地使用了批处理。例如,如果我总共有50个联邦快递职位、3个tnt职位和11个dhl职位,我想按如下方式排队
[fedex job:[20 jobs]][fedex job:[20 jobs]][fedex job:[10 jobs]]
[tnt job:[1 job]][tnt job:[1 job]][tnt job:[1 job]]
[dhl job:[10 job]][dhl job:[1 job]]我怎样才能实现上述工作方案?
编辑
我想用一个或多个工人在beanstalkd上运行这个程序。因此,独立状态是非常重要的。Beanstalkd的工作应该如下所示
{
'slug':'fedex'
'trackingNumbers':[11,22,33....] //20
}
{
'slug':'tnt'
'trackingNumbers':[11,22,33....] //10
}
{
'slug':'dhl'
'trackingNumbers':[11] //1
}
{
'slug':'tnt'
'trackingNumbers':[11,22,33....] //10
}
{
'slug':'fedex'
'trackingNumbers':[11,22,33....] //20
},
{
'slug':'dhl'
'trackingNumbers':[11] //1
}我真的不知道,也许有一个MongoDB函数可以将每个用户的包聚合到上面的块。
这是我的猫鼬模型
var UserSchema = mongoose.Schema({
email: {type: String, index: {unique: true, sparse: true}},
password: String,
createdOn: {type: Date, default:Date.now },
purchaseDate:Date,
expiryDate:Date,
purchaseID: {type: String, index: {unique: true, sparse: true}},
isEnabled: {type: Boolean,default: true}
});
UserSchema.virtual('parcels',{
ref: 'Parcel',
localField:'_id',
foreignField:'owner'
});
var ParcelSchema = mongoose.Schema({
owner : { type:mongoose.Schema.Types.ObjectId, ref: 'User' },
dna:String,
name: String,
count: {type: Number, default: 1},
trackingNumber: String,
slug:String,
isDelivered: {
type: Boolean, default: false
},
startDate: {type: Date, default:Date.now },
updateDate: Date,
finishDate: Date,
expectedDate: Date,
extra:String,
details:[{
_id:false,
message: String,
location: String,
date: Date,
status: Number
}]
});发布于 2016-08-07 15:18:28
这是一个建议。你可以这样做:
fedex,dhl等。stats-tube <tube>之前使用Beanstalkd的reserve命令。stats-tube返回此队列中当前保留的作业数(命令的YAML输出中的字段current-jobs-reserved )https://stackoverflow.com/questions/38813049
复制相似问题