6
回答
请问,短信如何做按优先级发送
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

目前有3种优先级的短信发送

高,中,低

现在有一个rest的接口,提供发短信的服务,调用者,需要传一个优先级

优先级高的一定要先发送,中的次之,最后发送低优先级的短信

但是,由于接口一直有人调用,一直会传入不同优先级的短信

请问,如何解决这种问题

<无标签>
举报
共有6个答案 最后回答: 2年前
你需要三个队列,接口收到短信时按级别分别放在三个队列中,然后发送程序按优先级从队列去数据,只有高优先级的队列里面没数据了,才从下个优先级的队列里面取数据。
--- 共有 1 条评论 ---
尚浩宇在此基础上,弄个单线程的读类,每次读的时候都要判断下队列从高到底是否有数据,有就取级别最高的 2年前 回复

引用来自“首席打酱油”的评论

你需要三个队列,接口收到短信时按级别分别放在三个队列中,然后发送程序按优先级从队列去数据,只有高优先级的队列里面没数据了,才从下个优先级的队列里面取数据。
如果说,我先发了高的,然后继续发中优先级的,但是,在发中优先级的时候,又来了高的,请问,怎么解决
--- 共有 1 条评论 ---
风情万种为啥高的 不能立即发送?怎么会存在这种问题呢? 2年前 回复
把要发送的短信放到一个优先队列里,取出的时候,优先级队列能保证每次出来都是优先级最高的

引用来自“首席打酱油”的评论

你需要三个队列,接口收到短信时按级别分别放在三个队列中,然后发送程序按优先级从队列去数据,只有高优先级的队列里面没数据了,才从下个优先级的队列里面取数据。

引用来自“西夏一品堂”的评论

如果说,我先发了高的,然后继续发中优先级的,但是,在发中优先级的时候,又来了高的,请问,怎么解决
貌似只有在每条发送完检查高级别队列了

引用来自“首席打酱油”的评论

你需要三个队列,接口收到短信时按级别分别放在三个队列中,然后发送程序按优先级从队列去数据,只有高优先级的队列里面没数据了,才从下个优先级的队列里面取数据。

引用来自“西夏一品堂”的评论

如果说,我先发了高的,然后继续发中优先级的,但是,在发中优先级的时候,又来了高的,请问,怎么解决
亲  发送进程每次发的时候都要从最高优先级的队列是否为空进行判断的
参考操作系统系统进程调度算法啊,你可以这样,队列呢只有一个,而且非常短,最好设定是能在一秒钟内全部执行完的那种短队列,然后有一个中断处理程序,来实时处理优先级的问题,将下一秒钟要发送的内容塞到队列中去,这样的话即不落空,又能保证高优先级短信下一秒就能进入队列等待发送......好吧,大致是这么个办法,如果你打算实时调整的话,那么,请直接参考操作系统的进程调度算法,以上提供的有一秒钟的延时
顶部