请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师, 6-11小节提到的 外部请求使用异步队列具体怎样实现呢

是在自己程序中创建一个任务队列,让线程池去处理来保证同一时刻与外部服务只有少数 socket吗?

正在回答 回答被采纳积分+3

1回答

求老仙 2021-06-24 17:33:08

一般一批线程处理缓冲(排队),缓冲可以是内存,但是mq和redis更安全,因为提供持久化机制。另一批线程处理具体的工作,也就是不断从队列中读出任务进行处理

0 回复 有任何疑惑可以回复我~
  • 还是感觉有点抽象,两批线程对一个队列进行处理,有点像生产者消费者模型,如果是具体到开发场景,我接收到一个请求,但这个任务比较耗时,我就把任务丢到了任务队列比如 redis 里,然后我要怎么做,是开一个轮询的工作线程痴,每隔10秒就从任务队列里取比如 100条数据,使用一个批量处理的接口每次处理100条,这样一个 socket 就可以做完之前要创建100个socket才能做的事情了
    回复 有任何疑惑可以回复我~ 2021-06-24 20:23:31
  • 求老仙 回复 提问者 文武双全的刘叔叔 #2
    请求没有必有去Redis,因为请求本身不怕失败(比如说0.003%的失败率,是可以接受吧?)。——客户端、或者服务端可以重发请求的。 所以请求本身丢到阻塞队列就可以了。 以nginx为例,nginx就内存中实现了一个缓冲区,然后由多个Worker轮询从缓冲区中读取请求。
    回复 有任何疑惑可以回复我~ 2021-07-14 01:42:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信