HSF API 手册
本文档内容仅针对 HSF 2.2 及其之后 版本
在 HSF 面向用户的 API 中,最为关键的就是与创建 ProviderBean 和 ConsumerBean 相关的 API 了。根据用户使用的场景不同,主要分为 4 个关键的类:
com.taobao.hsf.app.api.util.HSFApiProviderBean
: 通过 API 编程的方式创建 Provider Beancom.taobao.hsf.app.api.util.HSFApiConsumerBean
: 通过 API 编程的方式创建 Consumer Beancom.taobao.hsf.app.spring.util.HSFSpringProviderBean
: 通过 Spirng 配置的方式创建 Provider Beancom.taobao.hsf.app.spring.util.HSFSpringConsumerBean
: 通过 Spirng 配置的方式创建 Consumer Bean
其中,HSFSpringXxxBean 的配置属性与 HSFApiXxxBean 的 setter 方法相对应。接下来就分别以 ProviderBean 和 ConsumerBean 的视角介绍这 4 个类的 API。
ProviderBean
API 编程方式 - HSFApiProviderBean
通过配置并初始化 com.taobao.hsf.app.api.util.HSFApiProviderBean
即可完成 HSF 服务的发布。
对于一个服务,该过程只需要做一次。此外,考虑到 HSFApiProviderBean 对象比较重,建议缓存起来。
- 范例代码:
// 实例化并配置 Provider Bean
HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean();
hsfApiProviderBean.setServiceInterface("com.taobao.hsf.test.HelloWorldService");
hsfApiProviderBean.setTarget(target); // target 为 serviceInterface 指定接口的实现对象
hsfApiProviderBean.setServiceVersion("1.0.0");
hsfApiProviderBean.setServiceGroup("HSF");
// 初始化 Provider Bean,发布服务
hsfApiProviderBean.init();
- 可配置属性表:
除上述范例代码中设置的属性,HSFApiProviderBean 还包含许多其他可配置的属性,均可通过对应的 setter 方法进行设置。
属性名 | 类型 | 是否必选 | 默认值 | 含义 |
---|---|---|---|---|
serviceInterface | String | 是 | 无 | 设置 HSF 服务对外提供的业务接口。客户端通过此属性进行订阅。 |
target | Object | 是 | 无 | 设置 serviceInterface 指定接口的服务实现对象。 |
serviceVersion | String | 否 | 1.0.0 | 设置服务的版本号。客户端通过此属性进行订阅。 |
serviceGroup | String | 否 | HSF | 设置服务的组别。客户端通过此属性进行订阅。 |
serviceDesc | String | 否 | null | 设置服务的描述,从而方便管理。 |
clientTimeout | int | 否 | 3000 | 设置响应超时时间(单位:毫秒)。如果服务端在设置的时间内没有返回,则抛出 HSFTimeOutException。 |
methodSpecials | MethodSpecial[] | 否 | 空 | 设置服务中某些方法的响应超时时间。通过设置 MethodSpecial.methodName 指定方法名,通过设置 MethodSpecial.clientTimout 指定当前方法的超时时间,优先级高于当前服务端的 clientTimeout。 |
preferSerializeType | String | 否 | hessian2 | 针对 HSF2,设置服务的请求参数和响应结果的序列化方式。可选值有:java,hessian,hessian2,json,kryo。 |
corePoolSize | 值为整型的 String | 否 | 0 | 配置服务单独的线程池,并指定最小活跃线程数量。若不设置该属性,则默认使用 HSF 服务端的公共线程池。 |
maxPoolSize | 值为整型的 String | 否 | 0 | 配置服务单独的线程池,并指定最大活跃线程数量。若不设置该属性,则默认使用 HSF 服务端的公共线程池。 |
Spring 配置方式 - HSFSpringProviderBean
通过在 Spring 配置文件中,配置一个 class 为 com.taobao.hsf.app.spring.util.HSFSpringProviderBean
的 bean,即可完成 HSF 服务的发布。
- 范例配置:
<bean id="helloWorldService" class="com.taobao.hsf.test.HelloWorldService" />
<bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
<!-- [必选] 设置 HSF 服务对外提供的业务接口 -->
<property name="serviceInterface" value="com.taobao.hsf.test.HelloWorldService" />
<!-- [必选] 设置 serviceInterface 指定接口的服务实现对象,即需要发布为 HSF 服务的 spring bean id -->
<property name="target" ref="helloWorldService" />
<!-- [可选] 设置服务的版本号,默认为 1.0.0 -->
<property name="serviceVersion" value="1.0.0" />
<!-- [可选] 设置服务的组别,默认为 HSF -->
<property name="serviceGroup" value="HSF" />
<!-- [可选] 设置服务的描述,从而方便管理,默认为 null -->
<property name="serviceDesc" value="HelloWorldService providered by HSF" />
<!-- [可选] 设置响应超时时间(单位:毫秒)。如果服务端在设置的时间内没有返回,则抛出 HSFTimeOutException -->
<!-- 默认为 3000 ms -->
<property name="clientTimeout" value="3000"/>
<!-- [可选] 设置服务中某些方法的响应超时时间。优先级高于上面的 clientTimeout -->
<!-- 通过设置 MethodSpecial.methodName 指定方法名,MethodSpecial.clientTimout 指定方法的超时时间 -->
<property name="methodSpecials">
<list>
<bean class="com.taobao.hsf.model.metadata.MethodSpecial">
<property name="methodName" value="sum" />
<property name="clientTimeout" value="2000" />
</bean>
</list>
</property>
<!-- [可选] 设置服务的请求参数和响应结果的序列化方式。可选值有:java,hessian,hessian2,json,kryo -->
<!-- 默认为 hessian2 -->
<property name="preferSerializeType" value="hessian2"/>
<!-- [可选] 配置服务单独的线程池,并指定最小活跃线程数量。若不设置该属性,则默认使用 HSF 服务端的公共线程池 -->
<property name="corePoolSize" value="10"/>
<!-- [可选] 配置服务单独的线程池,并指定最大活跃线程数量。若不设置该属性,则默认使用 HSF 服务端的公共线程池 -->
<property name="maxPoolSize" value="60"/>
</bean>
ConsumerBean
API 配置方式 - HSFApiConsumerBean
通过配置并初始化 com.taobao.hsf.app.api.util.HSFApiConsumerBean
即可完成 HSF 服务的订阅。
对于一个服务,该过程只需要做一次。此外,考虑到 HSFApiConsumerBean 对象比较重,建议将该对象以及获取到的 HSF 代理都缓存起来。
其实在 HSF 内部 HSFApiConsumerBean 对服务的配置也是缓存起来的。也就是说,如果针对一个订阅的服务有多次配置,只有第一次的配置会生效。
- 范例代码:
// 实例化并配置 Consumer Bean
HSFApiConsumerBean hsfApiConsumerBean = new HSFApiConsumerBean();
hsfApiConsumerBean.setInterfaceName("com.taobao.hsf.test.HelloWorldService");
hsfApiConsumerBean.setVersion("1.0.0");
hsfApiConsumerBean.setGroup("HSF");
// 初始化 Consumer Bean,订阅服务
// true 表示等待地址推送(超时时间为 3000 毫秒),默认为 false(异步)
hsfApiConsumerBean.init(true);
// 获取 HSF 代理
HelloWorldService helloWorldService = (HelloWorldService) hsfApiConsumerBean.getObject();
// 发起 HSF 调用
String helloStr = helloWorldService.sayHello("Li Lei");
- 可配置属性表:
除上述范例代码中设置的属性,HSFApiConsumerBean 还包含许多其他可配置的属性,均可通过对应的 setter 方法进行设置。
属性名 | 类型 | 是否必选 | 默认值 | 含义 |
---|---|---|---|---|
interfaceName | String | 是 | 无 | 设置需要订阅服务的接口名。客户端通过此属性进行订阅。 |
version | String | 是 | 无 | 设置需要订阅服务的版本号。客户端通过此属性进行订阅。 |
group | String | 是 | 无 | 设置需要订阅服务的组别。客户端通过此属性进行订阅。 |
clientTimeout | int | 否 | 无 | 设置请求超时时间(单位:毫秒)。如果客户端在设置的时间内没有收到服务端响应,则抛出 HSFTimeOutException。 若客户端设置了 clientTimeout,则优先级高于服务端设置的 clientTimeout。否则,在服务的远程调用过程中,使用服务端设置的 clientTimeout。 |
methodSpecials | MethodSpecial[] | 否 | 空 | 设置服务中某些方法的请求超时时间。通过设置 MethodSpecial.methodName 指定方法名,通过设置 MethodSpecial.clientTimout 指定当前方法的超时时间,优先级高于当前客户端的 clientTimeout。 |
maxWaitTimeForCsAddress | int | 否 | 无 | 设置同步等待 ConfigServer 推送地址的时间(单位:毫秒),从而避免因地址还未推送到就发起服务调用造成的 HSFAddressNotFoundException。一般建议设置为 5000 毫秒,即可满足推送等待时间。 |
asyncallMethods | List | 否 | null | 设置需要异步调用的方法列表。List 中的每一个字符串的格式为 name:方法名;type:异步调用类型;listener:监听器 ,其中 listener 只对 callback 类型的异步调用生效。type 的类型有:
|
proxyStyle | String | 否 | jdk | 设置服务的代理模式,一般不用配置。如果要拦截这个 consumer bean,需要配置成 javassist。 |
Spring 编程方式 - HSFSpringConsumerBean
通过在 Spring 配置文件中,配置一个 class 为 com.taobao.hsf.app.api.util.HSFSpringConsumerBean
的 bean,即可实现服务的订阅。
- 范例配置:
<bean id="helloWorldService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean">
<!-- [必选] 设置需要订阅服务的接口名 -->
<property name="interfaceName" value="com.taobao.hsf.test.HelloWorldService" />
<!-- [必选] 设置需要订阅服务的版本号 -->
<property name="version" value="1.0.0" />
<!-- [必选] 设置需要订阅服务的组别 -->
<property name="group" value="HSF" />
<!-- [可选] 设置请求超时时间(单位:毫秒)。如果客户端在设置的时间内没有收到服务端响应,则抛出 HSFTimeOutException -->
<!-- 若客户端设置了 clientTimeout,则优先级高于服务端设置的 clientTimeout。否则,在服务的远程调用过程中,使用服务端设置的 clientTimeout。-->
<property name="clientTimeout" value="3000" />
<!-- [可选] 设置服务中某些方法的请求超时时间,优先级高于当前客户端的 clientTimeout -->
<!-- 通过设置 MethodSpecial.methodName 指定方法名,通过设置 MethodSpecial.clientTimout 指定当前方法的超时时间 -->
<property name="methodSpecials">
<list>
<bean class="com.taobao.hsf.model.metadata.MethodSpecial">
<property name="methodName" value="sum" />
<property name="clientTimeout" value="2000" />
</bean>
</list>
</property>
<!-- [可选] 设置同步等待 ConfigServer 推送地址的时间(单位:毫秒)-->
<!-- 从而避免因地址还未推送到就发起服务调用造成的 HSFAddressNotFoundException。-->
<!-- 一般建议设置为 5000 毫秒,即可满足推送等待时间。 -->
<property name="maxWaitTimeForCsAddress" value="5000"/>
<!-- [可选] 设置需要异步调用的方法列表。List 中的每一个字符串的格式为:name:方法名;type:异步调用类型;listener:监听器 -->
<!-- 其中,listener 只对 callback 类型的异步调用生效。type 的类型有:-->
<!-- future: 通过 Future 的方式去获取请求执行的结果 -->
<!-- callback: 当远程服务的调用完成后,HSF 会使用响应结果回调此处配置的 listener,该 listener 需要实现HSFResponseCallback 接口 -->
<property name="asyncallMethods">
<list>
<value>name:sayHello;type:callback;listener:com.taobao.hsf.test.service.HelloWorldServiceCallbackHandler</value>
</list>
</property>
<!-- [可选] 设置服务的代理模式,一般不用配置。如果要拦截这个 consumer bean,需要配置成 javassist -->
<property name="proxyStyle" value="jdk" />
</bean>
HSF JVM -D参数清单
-Dproject.name
指定工程名。 作为客户端调用的时候,会随着请求发给服务端,并作为服务治理的判断依据。
-DJM.LOG.PATH
指定中间件所有产品的日志目录。优先级高于 -DHSF.LOG.PATH
,从 1.8.1.1
开始支持。如果使用该参数,HSF 的日志将在 $JM.LOG.PATH/hsf/
里。如果没有使用-D参数指定日志目录,日志将会在 ${HOME}/logs/hsf/
下。
-DHSF.LOG.PATH
HSF.LOG.PATH
从 2.1.0.7
开始,废弃 HSF.LOG.PATH
参数。指定HSF的输出路径,默认值为应用的日志一个目录。如果需要设置HSF的日志级别,需要动态改变(since2.0),参见 http://confluence.taobao.ali.com/pages/viewpage.action?pageId=205392851
-Dhsf.server.port
指定 HSF 的启动服务绑定端口,默认为 12200
-Dhsf.serializer
指定 HSF 的序列化方式,默认值为 hessian
-Dhsf.server.max.poolsize
指定 HSF 的服务端最大线程池大小,默认值为 720
-Dhsf.server.min.poolsize
指定 HSF 的服务端最小线程池大小。默认值为 60
-Dhsf.client.localcall
打开/关闭本地优先调用。默认值是 true
-Dpandora.qos.port
指定 pandora 的监控端口,默认值为 12201
-Dcom.taobao.pandora.tmp_path
修改 pandora 展开文件的临时目录
-Dhsf.http.enable
是否开启 http 端口,默认是 false
。
-Dhsf.http.port
指定 HSF 暴露的http接口。默认值是 12220
-Dhsf.run.mode
指定 HSF 客户端是否指定 target 进行调用,即绕开ConfigServer。值为 1
表示不允许指定 target 调用,值为 0
表示允许指定 target 调用。默认为 1
,线上不推荐指定为 0
。
-Dhsf.shuthook.wait
HSF 优雅关闭的等待时间,单位是ms,默认是 10000
。
-Dneed.dubbo.registry
dubbo的配置,是否需要注册中心,默认是 true
。
-Ddubbo.reg.server
HSF 2.0 支持 dubbo 标签的客户端配置,从哪里拿地址,cs
表示从configserver拿地址,dubbo
表示从dubbo注册中心拿地址。该功能请使用HSF2.1.0.7以后的版本。
-Dhsf.registry.address
使用哪个注册中心,默认是 cs
,同时,现在支持本地文件、zookeeper,一般开源版本才需要修改。
-Dhsf.governance.type
使用哪种服务治理类型,默认是 diamond
,同时,现在支持本地文件,一般开源版本才需要修改。
-Dhsf.publish.delayed
是否所有的服务都需要延迟发布,默认是false,不需要延迟发布。
-Dhsf.bytebuf.pool
是否启用 pooled bytebuf,默认是 true
-Dio.netty.noPreferDirect
是否启用 direct buf。 默认是 true
-Dhsf.server.ip
多网卡情况下默认绑定第一个网卡,通过这个参数指定需要绑定的IP(2.0.1.6以后版本支持)
-DHsfBindHost
多网卡情况下默认绑定和上报给地址注册中心第一个网卡的ip地址,通过这个参数可以指定需要绑定的Host,比如-DHsfBindHost=0.0.0.0
将HSF server端口绑定本机所有网卡;
-Dhsf.flowcontrol.on=0.2
打开本机的同机房规则。从 2.1.0.9 开始支持,默认值为 0.2
(数值为本机房优先调用的阀值)
-Dhsf.publish.interval=400
发布服务之间的时间间隔,从 2.1.1.0
开始,HSF服务会一瞬间暴露出去,如果应用启动时受不了,可以配置这个参数。该参数从 2.1.1.2
开始支持,默认值是 400,单位ms
-Dhsf.usepojomethod=true
是否从实现类反射获取业务方法,默认为 false
,从接口获取。目前只有 modulet 框架 有需求从实现类获取方法,配置为 true
即可。该参数从 2.1.1.4
开始支持
-Dhsf.client.low.water.mark=32
-Dhsf.client.high.water.mark=64
-Dhsf.server.low.water.mark=32
-Dhsf.server.high.water.mark=64
- 客户端每个channel的写缓冲的限制,单位为KB,一旦超过高水位,channel禁写,新的请求放弃写出,直接报错。禁写之后,等到缓冲区低于低水位才能恢复。
- 服务端每个channel的写缓冲的限制,单位为KB,超过高水位时,新的响应放弃写出,客户端收不到响应会超时。缓冲区低于低水位时才能恢复写。
- 高低水位需成对设置,并且需要高水位>低水位
-Dhsf.generic.remove.class=true
泛化调用拿到的结果,不输出class
字段信息(since 2.1.1.6)
-DdefaultHsfClientTimeout
全局的客户端超时配置
-DenableImprovedHessian2
配置是否启用 hessian2 元数据缓存功能(since 2.2.1.8),从而提升 序列化/反序列化 性能。默认为 true
,开启该功能,如果需要禁用,则需要设置为 false。
HSF 日志中的 ERROR_CODE 以及对应语义
中文版本
旧的HSF错误码,是一个错误对应一个,新增的错误码,有一些对应一类问题,比如HSF-0051,就是指提示用户,比如方法过期或者配置有些不正确。
从HSF-0050之后是,HSF2.2新增的。
HSF 的异常类型主要分2种:
- BIZ 是业务错误,比如业务配置,或者业务处理有问题,业务设置规则有问题等
- HSF 是系统错误,HSF在运行时遇到的问题,和框架有关
ERROR_CODE | 类型 | 含义 |
---|---|---|
HSF-0001 | BIZ | 客户端找不到服务提供方的地址。可能是服务提供方不存在,也可能是经过选址逻辑的处理后,没有符合调用条件的地址。 |
HSF-0002 | BIZ | 客户端调用远端时返回了异常,这个异常可能是服务端抛出的业务异常或 HSFException。 |
HSF-0005 | BIZ | 服务端配置 HSFApiProviderBean 的时候没有设置 target 属性,因此无法调用。 |
HSF-0006 | BIZ | HSF 1.x 的序列化配置类型,不在支持的范围内。 |
HSF-0007 | BIZ | 不支持的序列化类型。 |
HSF-0008 | BIZ | 配置的服务名(interfaceName)不是一个接口类。 |
HSF-0009 | BIZ | 配置的 target 对象,没有实现 interfaceName 对应的接口。 |
HSF-0011 | BIZ | 配置的单元化属性 writeMode,即不是 unit 也不是 center。 |
HSF-0012 | BIZ | 配置的单元化属性 route,表示的是 userId 在参数列表中的下标,只能取 [0, 参数长度)。 |
HSF-0013 | BIZ | 配置的单元化属性 route,类型只能是 long 或 java.lang.Long |
HSF-0014 | BIZ | 服务端无法加载到 HSFApiProviderBean 配置的 interfaceName 接口。 |
HSF-0016 | HSF | HSF Provider server 启动失败。一般是端口冲突造成的。 |
HSF-0018 | HSF | 元数据写磁盘失败。 |
HSF-0019 | BIZ & HSF | TPS 限流规则相关的异常,包括解析规则失败等错误。 |
HSF-0020 | BIZ | 客户端的 HSFApiConsumerBean 被重复初始化。一般是有多个 HSFApiConsumerBean 配置了相同的 interfaceName 造成的。 |
HSF-0022 | BIZ & HSF | 归组规则相关的异常,包括规则解析失败、应用规则失败等错误。 |
HSF-0023 | BIZ & HSF | 权重规则相关的异常,包括规则解析失败、应用规则失败等错误。 |
HSF-0024 | BIZ | 客户端无法加载到路由规则中涉及的接口类。 |
HSF-0025 | BIZ & HSF | 路由规则相关的异常,包括规则解析失败、应用规则失败等错误。 |
HSF-0026 | BIZ & HSF | 同机房规则相关的异常,包括规则解析失败、应用规则失败等错误。 |
HSF-0027 | BIZ | 服务端的 HSF 线程池满。 |
HSF-0029 | BIZ | TOP 调用在服务端进行转换时,没有找到对应的 transformer。 |
HSF-0030 | BIZ | 服务端找不到客户端请求的方法。 |
HSF-0031 | BIZ | 服务端写响应时发现已经超时了,于是放弃写响应。 |
HSF-0034 | BIZ | 根据用户配置的单元化参数 route 获取 userId 时发生了异常。 |
HSF-0035 | BIZ | 客户端无法与服务提供方的地址建立连接,抛出异常。 |
HSF-0036 | BIZ | Dubbo 相关的场景需要设置 site 属性。 |
HSF-0037 | BIZ | 客户端/服务端 在 写请求/写响应 时,发生 序列化/反序列化 异常。 |
HSF-0051 | HSF & BIZ | 仅用于向用户提醒,不影响应用的正常运行。提醒内容包括方法过期,HSF dump 内存失败等。 |
HSF-0052 | HSF | 客户端生成代理对象失败。 |
HSF-0053 | HSF | 进行 Future 调用时,没有设置 Future 的结果。 |
HSF-0054 | HSF | 服务端的 HSFSpringProviderBean 注册为 Spring 框架的 Listener 失败。 |
HSF-0055 | HSF | 自定义序列化器工具 CustomizedSerializerHelper 注册失败。 |
HSF-0056 | HSF | ContextAwareWrapper 执行时发生异常,影响到调用链的恢复。 |
HSF-0057 | HSF | ApplicationComponent 创建失败。 |
HSF-0058 | HSF | 服务端发布服务时,出现异常。 |
HSF-0059 | HSF | 服务端注销服务时,出现异常。 |
HSF-0060 | HSF | 客户端订阅服务时,出现异常。 |
HSF-0061 | HSF | 客户端取消订阅服务时,出现异常。 |
HSF-0062 | HSF | 规则解析组件在解析规则时,创建 DocumentBuilder 失败。 |
HSF-0063 | HSF | SingleThreadSchedule 中的 Job 执行失败,有可能会影响服务发布等相关的操作。 |
HSF-0064 | HSF | ServiceLoader 以及应用服务 Loader 加载服务实例时出现了异常。 |
HSF-0065 | HSF | 应用服务端线程池的动态配置时出现异常,动态配置无法生效。 |
HSF-0066 | HSF | 注册中心(ConfigServer)向客户端(服务的订阅者)推送了空地址列表。 |
HSF-0067 | HSF | 服务端在处理客户端请求时,递交给 Invocationhandler 后产生了异常。 |
HSF-0068 | HSF | 服务端接收到了客户端的请求,但是对应的服务接口无法找到,或服务端没有发布这个服务。 |
HSF-0069 | HSF | 服务端在反射调用业务代码过程中,出现了未知的异常,一般是系统错误。 |
HSF-0070 | BIZ | 客户端调用时,出现了客户端线程池限流的问题。 |
HSF-0071 | HSF | 应用全局规则中的 eagleeye 部分时,出现了异常。 |
HSF-0072 | HSF | 由于缺少 rules 节点,导致全局规则解析失败。 |
HSF-0073 | HSF | 由于规则内容非法,导致全局规则解析失败。 |
HSF-0074 | HSF | 解析全局规则中的 OptimizedHessianRule 规则失败。 |
HSF-0075 | HSF | 解析全局规则中的 VirtualCmRule 规则失败。 |
HSF-0076 | HSF | HSF 与 Redis 交互失败。导致失败的原因可能是 Redis 连接获取失败,或数据发送失败。 |
HSF-0077 | HSF | HSF 向 Redis 汇报元数据失败。 |
HSF-0078 | HSF | NDI 调用,注册 ObjectDataWrapperSerializerFactory 失败。 |
HSF-0079 | HSF | NDI 调用,客户端初始化失败。 |
HSF-0080 | HSF | Spas 初始化失败。 |
HSF-0081 | HSF | Spas 在客户端运行时,生成鉴权信息失败。 |
HSF-0082 | HSF | Spas 在服务端运行时,请求未通过鉴权拦截和判断,被拒绝。 |
HSF-0083 | HSF | 服务端运行单元化保护逻辑时发生异常。 |
HSF-0084 | HSF | 服务端进行端口绑定时失败。 |
HSF-0085 | HSF | 在 StreamListener 扩展体系中,调用监听器出现异常。 |
HSF-0086 | HSF | HSF-HTTP 在服务端执行时,出现未知异常。 |
HSF-0087 | HSF | HSF 在转换 ConfigServer 推送的地址时,出现异常。 |
HSF-0088 | HSF | HSF 从 Diamond 获取订阅的配置时,出现异常。例如,Diamond 网络异常等。 |
HSF-0089 | HSF | 解析订阅的 Diamond 配置时,出现了异常。 |
HSF-0090 | HSF | 解析路由规则时,出现了异常。 |
HSF-0091 | HSF | HSF-HTTP 选择 HSFHttpInterceptor 时,出现了异常。 |
HSF-0092 | HSF | HSF-HTTP 当前没有可用的 HSFHttpInterceptor 处理客户端请求。 |
HSF-0093 | HSF | HSF 回调动态配置 Listener 时,Listener 抛出了异常。 |
HSF-0094 | HSF | 解析动态应用级配置时,出现了异常。请检查配置格式是否符合 k=v 的形式。 |
HSF-0095 | HSF | 构建 SSLContext 时,出现了异常。请检查 SSL 证书等配置是否正确。 |
HSF-0096 | HSF | 处于 TLS 严格加密模式的服务端,收到非加密请求。请检查客户端是否开启了 TLS 模式。 |
HSF-0097 | HSF | TLS 握手失败。请检查证书是否合法。 |
HSF-0098 | HSF | 服务端未开启鉴权,但是收到了加密的客户端请求。请确认服务端是否需要开启鉴权。 |
HSF-0099 | HSF | 服务端的 SslMode 配置不存在,降级使用 DISABLED。 |
HSF-0100 | HSF | 泛化调用反序列化 Map 为 Pojo 的时候,出现了异常。 |
HSF-0101 | HSF | HSF 获取的单元标(unit)为 null。请检查机器是否配置了单元标。 |
HSF-0102 | HSF | 服务端当前的网络写水位超过了配置的高水位阈值,服务端将放弃写响应。 |
HSF-0103 | HSF | 客户端当前的网络写水位超过了配置的高水位阈值,客户端将放弃写请求。 |
HSF-0104 | HSF | HSF 获取当前环境的 ConfigServer ENV 时,出现异常。 |
English Edition
There are two main error type in HSF:
- BIZ means there is a business related error, such as user configuration error, bussiness process logic error, or other issues.
- HSF means there is an internel run-time error in HSF framework.
ERROR_CODE | Type | Meaning |
---|---|---|
HSF-0001 | BIZ | The consumer can not get any addresses of target service. |
HSF-0002 | BIZ | The consumer started a RPC call and got BIZ/HSF exception which throwed by the service provider. |
HSF-0005 | BIZ | The provider is not configured with the "target" property, so it can not be called. |
HSF-0006 | BIZ | HSF 1.x doesn't support current serialization type. |
HSF-0007 | BIZ | Unsupported serialization type. |
HSF-0008 | BIZ | The "interfaceName" property that you set in HSFApiProviderBean is not a interface class. |
HSF-0009 | BIZ | The "target" property that you set in HSFApiProviderBean does not implement the interface class that you set in the "interfaceName" property of HSFApiProviderBean. |
HSF-0011 | BIZ | Illegal value for "writeMode" property of HSFApiProviderBean, it can only be "unit" or "center". |
HSF-0012 | BIZ | The "writeMode" property of HSFApiProviderBean is set to "unit", so the value of "route" property should be in [0, length of arguments). |
HSF-0013 | BIZ | The "writeMode" property of HSFApiProviderBean is set to "unit", so the type of "route" property should be long or java.lang.Long. |
HSF-0014 | BIZ | HSFApiProviderBean fails to load service interface. |
HSF-0016 | HSF | Failed to start HSF provider server. It is usually caused by port conflict. |
HSF-0018 | HSF | Failed to write HSF metadata to file. |
HSF-0019 | BIZ & HSF | Failed to parse TPS/WhiteList rule. |
HSF-0020 | BIZ | The HSFApiConsumerBean has been initialized many times. It is usually caused by the case that a same "interfaceName" property value set in many beans. |
HSF-0022 | BIZ & HSF | Failed to parse grouping rule. |
HSF-0023 | BIZ & HSF | Failed to parse weighting rule. |
HSF-0024 | BIZ | Failed to load the interface defined routing rule. |
HSF-0025 | BIZ & HSF | Failed to parse routing rule. |
HSF-0026 | BIZ & HSF | Failed to parse MachineRoom-Prefer rule(also called flow control rule). |
HSF-0027 | BIZ | HSF provider thread pool is full. It is usually caused by slow processing of some services. |
HSF-0029 | BIZ | There is no corresponding transformer for TOP service. |
HSF-0030 | BIZ | There is no such request method in current HSF provider. |
HSF-0031 | BIZ | HSF provider gives up to send response to client because of the request has already been timed out. |
HSF-0034 | BIZ | In unit mode, HSF consumer failed to get "userId" parameter according to the "route" property. |
HSF-0035 | BIZ | HSF consumer failed to establish connection with selected provider. |
HSF-0036 | BIZ | Need to add "site" property for Dubbo. |
HSF-0037 | BIZ | Exception occurred while serializing/deserializing RPC request/response. |
HSF-0051 | HSF & BIZ | Just to warn the user that some methods have been expired, or HSF failed to dump memory. It does not affect the application status. |
HSF-0052 | HSF | Failed to generate proxy object for consumer. |
HSF-0053 | HSF | When the future call is made, the result of the future is not set. |
HSF-0054 | HSF | HSFSpringProviderBean failed to register itself as a Spring Framwork listener. |
HSF-0055 | HSF | CustomizedSerializerHelper failed to accept the registration from user code. |
HSF-0056 | HSF | An exception occurred during the execution of ContextAwareWrapper, and the recovery of the invocation chain is affected. |
HSF-0057 | HSF | An exception occurred during the creation of ApplicationComponent. |
HSF-0058 | HSF | An exception occurred when the provider registers services. |
HSF-0059 | HSF | An exception occurred when the provider unregisters services. |
HSF-0060 | HSF | An exception occurred when the consumer subscribes services. |
HSF-0061 | HSF | An exception occurred when the consumer unsubscribes services. |
HSF-0062 | HSF | Failed to create DocumentBuilder when parsing rules. |
HSF-0063 | HSF | The execution of SingleThreadSchedule job is failed. Services register, address calculation and other background tasks may be affected. |
HSF-0064 | HSF | An exception occurred when ServiceLoader loads SPI implementations. |
HSF-0065 | HSF | Failed to configure provider thread pool through dynamic rule. |
HSF-0066 | HSF | The client received an empty list of service addresses from ConfigServer registry. |
HSF-0067 | HSF | An exception occurred after the server sends process result to Invocationhandler. |
HSF-0068 | HSF | Can not find the service interface that client requested on server side. |
HSF-0069 | HSF | An exception occurred when server calls business method through reflection API. |
HSF-0070 | BIZ | Failed to invoke provider because of the limit of ClientConcurrencyLimiter. |
HSF-0071 | HSF | An exception occurred when applying the eagleeye section of global rule. |
HSF-0072 | HSF | Failed to parse global rule because of the rules node is missing. |
HSF-0073 | HSF | Failed to parse global rule because of illeagl rules node. |
HSF-0074 | HSF | Failed to parse OptimizedHessianRule rule in global rule. |
HSF-0075 | HSF | Failed to parse VirtualCmRule rule in global rule. |
HSF-0076 | HSF | An exception occurred while preparing Redis client for service metadata reportor. |
HSF-0077 | HSF | An exception occurred while reporting service metadata to Redis. |
HSF-0078 | HSF | Failed to register ObjectDataWrapperSerializerFactory in NDI mode. |
HSF-0079 | HSF | The client initialization failed in NDI mode. |
HSF-0080 | HSF | Spas initialization failed. |
HSF-0081 | HSF | An runtime exception occurred when Spas generates authentication information on client side. |
HSF-0082 | HSF | Request denied by server because of Spas authentication failure. |
HSF-0083 | HSF | An exception occurred while applying unit protection logic on server side. |
HSF-0084 | HSF | Failed to bind port for HSF Netty server. It is usually caused by port conflict. |
HSF-0085 | HSF | Invoke SPIs of StreamListener got exception. It can be ignored at most time. |
HSF-0086 | HSF | An unknown error occurred while processing the HSF HTTP request. |
HSF-0087 | HSF | An exception occurred when HSF converts a raw address list to HSFServiceURL list. |
HSF-0088 | HSF | Failed to fetch configuration from Diamond Server. It is caused by network or environment problems. |
HSF-0089 | HSF | Failed to parse Diamond configuration. |
HSF-0090 | HSF | Failed to parse routing rule. |
HSF-0091 | HSF | An exception occurred while selecting an HSFHttpInterceptor for current request. |
HSF-0092 | HSF | There is no HSFHttpInterceptor to accept HSF HTTP request. |
HSF-0093 | HSF | An exception occurred when HSF callbacks dynamic configuration listener. |
HSF-0094 | HSF | Failed to parse dynamic application-level configuration. Please make sure that the configuration format is in k = v form. |
HSF-0095 | HSF | Failed to build SSLContext. Please check your SSL certificate configuration. |
HSF-0096 | HSF | The server receives an unencrypted request in TLS strict encryption mode. Please turn on TLS mode for clients. |
HSF-0097 | HSF | TLS handshake failed. Please check the certificate is valid. |
HSF-0098 | HSF | The server recived an encrypted request in non-authentication mode. Please confirm that whether the server should turn on authentication mode. |
HSF-0099 | HSF | SslMode is not configured on server side, using default configuration DISABLED. |
HSF-0100 | HSF | An exception occurred when GenericService deserializes Map to Pojo object. |
HSF-0101 | HSF | The Unit label got by HSF is null. Please check the unit label of current machine is configured right. |
HSF-0102 | HSF | Current server-side water mark for network write exceeds the configured threshold, so the server will give up wirting response. |
HSF-0103 | HSF | Current client-side water mark for network write exceeds the configured threshold, so the client will give up writing request. |
HSF-0104 | HSF | Failed to get ENV property of ConfigServer in current environment. |