mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-25 10:18:59 +02:00
refactor(notif): enhance retry mechanism with exponential backoff and jitter; replace retry channel with a set for managing retry messages
This commit is contained in:
33
internal/notif/retry_message.go
Normal file
33
internal/notif/retry_message.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package notif
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
type RetryMessage struct {
|
||||
Message *LogMessage
|
||||
Trials int
|
||||
Provider Provider
|
||||
NextRetry time.Time
|
||||
}
|
||||
|
||||
var maxRetries = map[zerolog.Level]int{
|
||||
zerolog.DebugLevel: 1,
|
||||
zerolog.InfoLevel: 1,
|
||||
zerolog.WarnLevel: 3,
|
||||
zerolog.ErrorLevel: 5,
|
||||
zerolog.FatalLevel: 10,
|
||||
zerolog.PanicLevel: 10,
|
||||
}
|
||||
|
||||
func (msg *RetryMessage) MarshalZerologObject(e *zerolog.Event) {
|
||||
e.Str("provider", msg.Provider.GetName()).
|
||||
Int("trial", msg.Trials+1).
|
||||
Str("title", msg.Message.Title)
|
||||
if !msg.NextRetry.IsZero() {
|
||||
e.Int("max_retries", maxRetries[msg.Message.Level]).
|
||||
Time("next_retry", msg.NextRetry)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user