HotChocolate联邦网关配置UuidType格式后刷新Schema出现崩溃问题
问题根因
该报错根源是网关侧手动注册的自定义格式UuidType实例,与Schema Stitching从下游API拉取的默认UuidType定义重名冲突,热刷新重建Schema时类型初始化器检测到重复类型定义,触发状态校验异常。
解决方案(二选一即可)
方案一:使用全局UUID格式配置(最推荐)
不要手动通过AddType注册UuidType实例,直接修改HotChocolate全局Schema配置的默认UUID格式,该配置会全局生效,不会产生类型冲突:
builder.Services.AddGraphQL() .ModifySchemaOptions(options => { // 全局指定UUID默认输出为带短横线的D格式 options.DefaultUuidFormat = 'D'; }) // 保留你原有其他配置,如AddStitching、Redis缓存配置等
方案二:为自定义UUID类型配置合并规则
如果你必须用AddType的方式注册自定义UuidType,需要在Stitching配置中添加UUID类型的合并规则,告诉网关自定义的UuidType和下游拉取的UuidType为同一类型,无需重复初始化:
builder.Services.AddGraphQL() .AddType(new UuidType('D')) .AddStitching(options => { // 原有Stitching配置 options.AddTypeMergeRule<UuidType>(); })
验证说明
调整配置后重启网关,先验证正常请求的UUID输出是否为带短横线的格式,再修改下游API Schema触发网关刷新,即可确认不会再抛出Schema初始化异常。
内容的提问来源于stack exchange,提问作者vm2013
相关产品推荐
相关产品推荐

