chenxing 48625d0f11
build / build-push (push) Successful in 1m1s
fix(gateway): 修复 RouteChangeBroadcaster 的 Redis 注入歧义(线上启动崩溃)
线上 f456c857 启动失败、容器无限重启,根因为 StringRedisTemplate 注入歧义:

- Field redisTemplate in RouteChangeBroadcaster required a single bean, but 2 were found:
  stringRedisTemplate (RedisAutoConfiguration) 与
  signKeyStringRedisTemplate (yh-appauth SignKeyRedisAutoConfiguration)

修复:

- 显式 @Qualifier("stringRedisTemplate") 绑定应用主库模板。必须选主库:网关
  SPRING_REDIS_DATABASE=7,而 appauth 密钥模板直连 db0——选错会造成发布/订阅异库、
  广播静默失效,比启动失败更难排查。
- 订阅容器改用 redisTemplate.getConnectionFactory(),结构上保证发布与订阅同库,
  同时消除 RedisConnectionFactory 同类型多 bean 的隐患。

回归测试 RouteChangeBroadcasterWiringTest(3 例):

- 手工驱动 AutowiredAnnotationBeanPostProcessor 构造「stringRedisTemplate 与
  signKeyStringRedisTemplate 共存」的最小上下文(复刻 appauth 在场的现场)
- 断言装配成功;断言绑定的是主库模板而非密钥专用模板
- 反向断言:裸 @Autowired 在双 bean 下必然抛 UnsatisfiedDependencyException
  —— 钉死本次事故的成因,防止回退

既有测试为何漏掉:application-test.yml 的 redis-broadcast-enabled=false 把该 bean
整个关掉,装配分支从未被覆盖。

mvn -o test: 104/104 通过(新增 3 例)。
2026-09-24 10:57:42 +08:00
2026-09-21 10:29:53 +08:00

open-gateway 开放接口网关

容器网内 oapi 统一入口(路由 / 验签 / 转发 / 台账),后期对外 open.yunhaixingtong.com 唯一鉴权面。 实施依据:开放接口中心实施方案1.0.md(云海 workspace 根目录)。

  • 端口:10010(projman 注册:空 contextPath、needDb=true、infraServices=["redis"])
  • 库表:docs/sql/01_schema.sql(注册表/台账/日统计;T1.7 导入)
  • 环境值(datasource/redis/routes/observe)一律走平台配置层,jar 内 yml 只留占位注释
  • CI:push main 自动构建 app.jar 并推 nexus:8083/docker-hosted/open-gateway-service
S
Description
managed by projman
Readme
397 KiB
Languages
Java 99.8%
Dockerfile 0.2%