feat(push-gateway): config 扩展 + kafka consumer + ws handler + nextstep 文档
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
// Package config loads runtime configuration for push-gateway from environment
|
||||
// variables. Required variables (JWT_SECRET in production, INTERNAL_API_TOKEN
|
||||
// when not in DevMode) cause a fatal exit when missing.
|
||||
// variables. Required variables (JWT_SECRET in production, PUSH_INTERNAL_TOKEN
|
||||
// or INTERNAL_API_TOKEN when not in DevMode) cause a fatal exit when missing.
|
||||
//
|
||||
// v2 alignment (ARB-013 / msg contract): Kafka topic default changed to
|
||||
// edu.notify.notification.sent; PUSH_INTERNAL_TOKEN is the canonical env var
|
||||
// for /internal/* auth (INTERNAL_API_TOKEN kept as a backward-compat alias).
|
||||
package config
|
||||
|
||||
import (
|
||||
@@ -54,9 +58,15 @@ func Load() *Config {
|
||||
}
|
||||
}
|
||||
|
||||
internalToken := env.Get("INTERNAL_API_TOKEN", "")
|
||||
// PUSH_INTERNAL_TOKEN is the canonical env var for /internal/* auth
|
||||
// (ARB-013 alignment with msg). INTERNAL_API_TOKEN is kept as a
|
||||
// backward-compat alias for existing deployments.
|
||||
internalToken := env.Get("PUSH_INTERNAL_TOKEN", "")
|
||||
if internalToken == "" {
|
||||
internalToken = env.Get("INTERNAL_API_TOKEN", "")
|
||||
}
|
||||
if internalToken == "" && !devMode {
|
||||
log.Fatal("INTERNAL_API_TOKEN must be set in non-dev mode")
|
||||
log.Fatal("PUSH_INTERNAL_TOKEN (or INTERNAL_API_TOKEN) must be set in non-dev mode")
|
||||
}
|
||||
|
||||
return &Config{
|
||||
@@ -71,7 +81,9 @@ func Load() *Config {
|
||||
HeartbeatInterval: env.GetInt("HEARTBEAT_INTERVAL_SECONDS", 30),
|
||||
JWKSURL: env.Get("JWKS_URL", "http://localhost:50052/.well-known/jwks.json"),
|
||||
KafkaBrokers: parseBrokers(env.Get("KAFKA_BROKERS", "localhost:9092")),
|
||||
KafkaNotificationTopic: env.Get("KAFKA_NOTIFICATION_TOPIC", "edu.notification.requested"),
|
||||
// ARB-013 canonical topic name: edu.<domain>.<aggregate>.<action>.
|
||||
// msg's Outbox publisher emits to this topic.
|
||||
KafkaNotificationTopic: env.Get("KAFKA_NOTIFICATION_TOPIC", "edu.notify.notification.sent"),
|
||||
KafkaConsumerGroup: env.Get("KAFKA_CONSUMER_GROUP", "push-gateway"),
|
||||
InstanceID: env.Get("INSTANCE_ID", generateInstanceID()),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user