由于golang在单独的goroutine中处理传入请求,因此我不清楚应该延迟哪些类型的任务由消息队列处理,例如NSQ消费者应该在http请求goroutine中处理。
答案 0 :(得分:2)
由于net/http
包运行每个请求,因此您无需担心阻止请求goroutine。你应该问自己的真正问题是“在我向客户回复之前我是否需要这样做,或者可以推迟到以后”。通常,如果我需要从数据库中提取服务器来响应将阻止请求goroutine的响应,那就没问题。如果我现在可以返回一个响应并在队列中发送消息以便稍后执行操作,那也可以。
由于请求goroutine存在的成本很低,并且它与其他请求隔离,因此您实际上不需要担心这么多。做对客户有意义的事情。