One*_*One 5
有 1 个 goroutine 来处理电子邮件并使用渠道与之通信,例如:
var emailch = make(chan *UserInfo)
//you could make it buffered, that way it will block if requests are coming too fast
//var emailch = make(chan *UserInfo, 1000)
func init() {
go func() {
for ui := range emailch {
send_email(ui.Email)
}
}()
}
func Register(rw http.ResponseWriter, req *http.Request) {
//code
emailch <- &UserInfo{....}
}
- @Jacob 是的,但这始终是您的问题,您可以简单地减少队列大小或将其移动到外部排队软件(可能会崩溃)。使用调度程序 goroutine 的可变池将您的邮件异步发送到 SES,这样您就可以控制队列长度和丢失的信息量。 (3认同)