Fabric Gateway SDK如何检测通道是否存在?v1.4.9适配问题
设计逻辑说明
Gateway SDK v2.2.2版本的getNetwork(String channelName)方法采用懒加载设计,调用该方法时,SDK只会在本地初始化Network对象的基础结构,不会立刻与Fabric节点交互校验通道是否真实存在。你看到的栈追踪是SDK内部的日志输出,仅记录了首次后台异步拉取通道配置失败的信息,不会终止对象初始化流程,因此最终返回的Network对象仍然非空,该行为属于版本原生设计,与Fabric v1.4.9后端兼容。
不存在通道的检测方案
- 主动校验法:拿到Network对象后立即调用
network.getChannel().getChannelConfiguration(),该方法会同步向节点请求当前通道的配置数据,如果通道不存在,方法会直接抛出异常,捕获该异常即可判定通道不存在。该方案准确率最高,仅存在少量的网络请求开销,完全适配你当前的版本环境。 - 业务操作捕获法:如果拿到Network对象后会立刻执行链码查询、交易提交等业务操作,可以直接在首次业务调用逻辑中捕获异常,如果异常信息包含
channel not found、channel does not exist等关键字,即可判定通道不存在,不需要额外增加校验逻辑。
内容的提问来源于stack exchange,提问作者user10931326
相关产品推荐
相关产品推荐

