Last active
January 27, 2021 12:30
-
-
Save MufidJamaluddin/67f9e0074cc6f696d76565af0d7ea2e2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var emailChannel chan *viewmodels.EmailMessage | |
var emailChannelClosed bool | |
func SendMessage(message *viewmodels.EmailMessage) { | |
emailChannel <- message | |
} | |
func Open() { | |
emailChannel = make(chan *viewmodels.EmailMessage) | |
// JUMLAH THREAD WORKER PENGIRIMAN EMAIL | |
worker := runtime.NumCPU() | |
if worker < 1 { | |
worker = 1 | |
} | |
emailChannelClosed = false | |
// JALANKAN THREAD WORKER | |
for i := 0; i < worker; i++ { | |
go sendMessageInBackground() | |
} | |
} | |
// WORKER PENGIRIM EMAIL | |
func sendMessageInBackground() { | |
defer func() { | |
if !emailChannelClosed { | |
if err := recover(); err != nil { | |
log.Println("send email panic occurred:", err) | |
} | |
} | |
}() | |
// BUAT KONEKSI EMAIL | |
// LOGIKA INFINITE LOOP CONSUME DARI emailChannel | |
for { | |
select { | |
case vMessage, ok := <-emailChannel: | |
if !ok { | |
return | |
} | |
if vMessage == nil { | |
continue | |
} | |
// CEK KONEKSI EMAIL | |
// LOGIKA KIRIM EMAIL TARUH DISINI | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment