声明一个调用接口
const senddingyue=async(openid,thing1,thing2,id)=>{
console.log(Date.now()-time,openid,thing1,thing2,id)
try {
let sendResult=await cloud.openapi.subscribeMessage.send({
touser:openid,
templateId:templateId,
page: 'pages/index/index',
data: {
thing1: {
value: thing1,
},
thing5: {
value: thing2,
},
}
})
console.log(thing2,sendResult)
if(sendResult.errCode==0){//发送成功,删除数据库数据
let del= await db.collection('ttttt').doc(id).remove()
console.log(del)
}
} catch (error) {
console.log(error)
}
}
云函数主函数调用上面接口时,
for(let i=0;i<messagelist.data.length;i++){
await delay(10);//延时
let thing1=messagelist.data[i].gname
let thing2=messagelist.data[i].inf01
senddingyue(messagelist.data[i]._openid,thing1,thing2,messagelist.data[i]._id)
}
主函数 await delay(10)如果不加延时,很多subscribeMessage.send调用处理无效,返回失败值:-1。
但是,加延时后,比如20ms,一个云函数10s算,也只能处理500条通知,注定无法处理高并发,比如整点发送2万条通知,有什么好方法解决吗?
无法解决。建议放弃。
另:订阅消息这种机制,很难想象怎么可能用到批量群发,还是2万+的定时群发,你是怎么解决用户授权订阅的?是怎么让用户攒够每天定时群发的订阅数的?
当然,如果是长期订阅消息就当我没说。