mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-25 01:38:30 +02:00
refactor(notif): replace RangeAllParalel with for loop and WaitGroup in dispatch
This commit is contained in:
@@ -3,6 +3,7 @@ package notif
|
|||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
"math/rand/v2"
|
"math/rand/v2"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
@@ -96,20 +97,26 @@ func (disp *Dispatcher) dispatch(msg *LogMessage) {
|
|||||||
Str("level", msg.Level.String()).
|
Str("level", msg.Level.String()).
|
||||||
Str("title", msg.Title).Logger()
|
Str("title", msg.Title).Logger()
|
||||||
|
|
||||||
disp.providers.RangeAllParallel(func(p Provider) {
|
var wg sync.WaitGroup
|
||||||
if err := msg.notify(task.Context(), p); err != nil {
|
for p := range disp.providers.Range {
|
||||||
msg := &RetryMessage{
|
wg.Add(1)
|
||||||
Message: msg,
|
go func(p Provider) {
|
||||||
Trials: 0,
|
defer wg.Done()
|
||||||
Provider: p,
|
if err := msg.notify(task.Context(), p); err != nil {
|
||||||
NextRetry: time.Now().Add(calculateBackoffDelay(0)),
|
msg := &RetryMessage{
|
||||||
|
Message: msg,
|
||||||
|
Trials: 0,
|
||||||
|
Provider: p,
|
||||||
|
NextRetry: time.Now().Add(calculateBackoffDelay(0)),
|
||||||
|
}
|
||||||
|
disp.retryMsg.Add(msg)
|
||||||
|
l.Debug().Err(err).EmbedObject(msg).Msg("notification failed, scheduling retry")
|
||||||
|
} else {
|
||||||
|
l.Debug().Str("provider", p.GetName()).Msg("notification sent successfully")
|
||||||
}
|
}
|
||||||
disp.retryMsg.Add(msg)
|
}(p)
|
||||||
l.Debug().Err(err).EmbedObject(msg).Msg("notification failed, scheduling retry")
|
}
|
||||||
} else {
|
wg.Wait()
|
||||||
l.Debug().Str("provider", p.GetName()).Msg("notification sent successfully")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (disp *Dispatcher) processRetries() {
|
func (disp *Dispatcher) processRetries() {
|
||||||
|
|||||||
Reference in New Issue
Block a user