Directly use multiple goroutines to speed up delivery speed

This commit is contained in:
2024-07-23 18:27:43 +08:00
parent 7541292f68
commit fbfb340058
4 changed files with 38 additions and 42 deletions

View File

@@ -17,29 +17,20 @@ import (
"time"
)
var deliveryTaskQueue = make(chan any, 256)
func PublishDeliveryTask(task any) {
deliveryTaskQueue <- task
}
func ConsumeDeliveryTasks() {
for {
task := <-deliveryTaskQueue
switch tk := task.(type) {
case *proto.DeliverEmailRequest:
if tk.GetEmail().HtmlBody != nil {
_ = SendMailHTML(tk.GetTo(), tk.GetEmail().GetSubject(), tk.GetEmail().GetHtmlBody())
} else {
_ = SendMail(tk.GetTo(), tk.GetEmail().GetSubject(), tk.GetEmail().GetTextBody())
}
case *proto.DeliverNotificationRequest:
switch tk.GetProvider() {
case "firebase":
_ = PushFirebaseNotify(tk.GetDeviceToken(), tk.GetNotify())
case "apple":
_ = PushAppleNotify(tk.GetDeviceToken(), tk.GetNotify())
}
func DealDeliveryTask(task any) {
switch tk := task.(type) {
case *proto.DeliverEmailRequest:
if tk.GetEmail().HtmlBody != nil {
_ = SendMailHTML(tk.GetTo(), tk.GetEmail().GetSubject(), tk.GetEmail().GetHtmlBody())
} else {
_ = SendMail(tk.GetTo(), tk.GetEmail().GetSubject(), tk.GetEmail().GetTextBody())
}
case *proto.DeliverNotificationRequest:
switch tk.GetProvider() {
case "firebase":
_ = PushFirebaseNotify(tk.GetDeviceToken(), tk.GetNotify())
case "apple":
_ = PushAppleNotify(tk.GetDeviceToken(), tk.GetNotify())
}
}
}