26 lines
443 B
Go
26 lines
443 B
Go
package mailer
|
|
|
|
import (
|
|
domain "RenewCMS/internal/domain/mail"
|
|
"log"
|
|
)
|
|
|
|
type AsyncDispatcher struct{}
|
|
|
|
func NewAsyncDispatcher() *AsyncDispatcher {
|
|
return &AsyncDispatcher{}
|
|
}
|
|
|
|
func (a *AsyncDispatcher) Dispatch(job func()) {
|
|
go func() {
|
|
defer func() {
|
|
if recovered := recover(); recovered != nil {
|
|
log.Println("panic in a background mail job:", recovered)
|
|
}
|
|
}()
|
|
job()
|
|
}()
|
|
}
|
|
|
|
var _ domain.Dispatcher = &AsyncDispatcher{}
|