由于golang在单独的goroutine中处理传入的请求,因此我不清楚应由消息队列(例如NSQ使用者)将哪些类型的任务推迟处理,以及应在http request goroutine中处理哪些类型的任务。
由于net/http
软件包运行每个请求,因此您不必担心会阻塞请求goroutine。您应该问自己的真正问题是:“在我将响应返回给客户之前是否需要执行此操作,否则可以将其推迟到以后再进行”。通常,如果我需要从数据库中获取内容以提供响应,该响应将阻止请求goroutine,那就可以了。如果我现在可以返回响应并将消息放在队列中以备后用,那也可以。
由于请求goroutine几乎不存在任何开销,并且与其他请求隔离,因此您实际上不必为此担心太多。做对客户有意义的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句