48625d0f116bae588a537a2292e6ced44fd7a203
build / build-push (push) Successful in 1m1s
线上 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 例)。
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
Languages
Java
99.8%
Dockerfile
0.2%