feat: retry gateway kafka publishes
This commit is contained in:
@@ -138,7 +138,7 @@ func buildSink(logger *slog.Logger) (eventbus.Sink, error) {
|
||||
logger.Warn("KAFKA_BROKERS is empty; using log sink")
|
||||
return eventbus.NewLogSink(logger), nil
|
||||
}
|
||||
return eventbus.NewKafkaSink(eventbus.KafkaConfig{
|
||||
sink, err := eventbus.NewKafkaSink(eventbus.KafkaConfig{
|
||||
Brokers: brokers,
|
||||
RawTopics: map[envelope.Protocol]string{
|
||||
envelope.ProtocolGB32960: env("KAFKA_TOPIC_GB32960_RAW", "vehicle.raw.gb32960.v1"),
|
||||
@@ -147,6 +147,14 @@ func buildSink(logger *slog.Logger) (eventbus.Sink, error) {
|
||||
},
|
||||
UnifiedTopic: env("KAFKA_TOPIC_UNIFIED", "vehicle.event.unified.v1"),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return eventbus.NewRetryingSink(sink, eventbus.RetryConfig{
|
||||
Attempts: envInt("KAFKA_PUBLISH_ATTEMPTS", 3),
|
||||
Backoff: time.Duration(envInt("KAFKA_PUBLISH_BACKOFF_MS", 100)) * time.Millisecond,
|
||||
AttemptTimeout: time.Duration(envInt("KAFKA_PUBLISH_TIMEOUT_MS", 3000)) * time.Millisecond,
|
||||
}), nil
|
||||
}
|
||||
|
||||
func env(key string, fallback string) string {
|
||||
|
||||
Reference in New Issue
Block a user