677
微信
消费者订阅服务__服务开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
消费者的订阅从代码编写的角度分为两个部分:首先 Spring 的配置文件使用标签<hsf:consumer/>
定义好一个 Bean;然后在使用的时候从 Spring 的 context 中将 Bean 取出来即可。Demo 工程的 detail 为消费者的示例,示例代码说明如下。
消费者配置
与生产者一样消费者的配置文件分为 Maven 依赖配置与 Spring 的配置,且 Maven 的依赖与生产者依赖一样,详情请参考文档生产者实现服务的服务配置小节。
除了必要的 Spring 所定义的配置之外,还需要在 Spring 的配置文件中增加消费者的定义,HSF 框架将根据该配置文件去服务中心订阅所需的服务,配置文件 /resource/hsf-consumer-beans.xml 内容与释义如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="https://www.taobao.com/hsf"
xmlns="https://www.springframework.org/schema/beans"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-2.5.xsd
https://www.taobao.com/hsf
https://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">
<!-- 消费一个服务示例 -->
<hsf:consumer
<!-- Bean ID,在代码中可根据此ID进行注入并使用 -->
id=“item"
<!-- 服务名,与服务提供者的相应配置对应,HSF 将根据 interface + version + group 查询并订阅所需服务 -->
interface="com.alibaba.edas.carshop.itemcenter.ItemService"
<!-- 版本号,与服务提供者的相应配置对应,HSF 将根据 interface + version + group 查询并订阅所需服务 -->
version="1.0.0"
<!-- 分组名,与服务提供者的相应配置对应,HSF 将根据 interface + version + group 查询并订阅所需服务 -->
group="testHSFGroup">
</hsf:consumer>
</beans>
消费者使用服务
Demo 中的示例代码如下:
public class StartListener implements ServletContextListener{
@Override
public void contextInitialized( ServletContextEvent sce ) {
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext( sce.getServletContext() );
// 根据 Spring 配置中的Bean ID “item” 获取订阅到的服务
final ItemService itemService = ( ItemService ) ctx.getBean( "item" );
……
// 调用服务 ItemService 的 getItemById 方法
System.out.println( itemService.getItemById( 1111 ) );
// 调用服务 ItemService 的 getItemByName 方法
System.out.println( itemService.getItemByName( "myname is le" ) );
……
}
}
消费者配置属性清单
除了示例代码中体现的属性(interface,group,version)之外,还有下表的属性配置以供选择:
属性 | 描述 |
---|---|
interface | interface 必须配置 [String],为需要调用的服务的接口 |
version | version 为可选配置 [String],含义为需要调用的服务的版本,默认为1.0.0 |
group | group 为可选配置 [String],含义为需要调用的服务所在的组,以便按组别来管理服务的配置,默认为 HSF,建议配置 |
methodSpecials | methodSpecials 为可选配置,含义为为方法单独配置超时(单位 ms),这样接口中的方法可以采用不同的超时时间,该配置优先级高于服务端的超时配置 |
target | 主要用于单元测试环境和 hsf.runmode=0 的开发环境中,在运行环境下,此属性将无效,而是采用配置中心推送回来的目标服务地址信息 |
connectionNum | connectionNum 为可选配置,含义为支持设置连接到 server 连接数,默认为1,在小数据传输,要求低延迟的情况下设置多一些,会提升 TPS |
clientTimeout | 客户端统一设置接口中所有方法的超时时间(单位 ms),超时设置优先级由高到低是:客户端 MethodSpecial,客户端接口级别,服务端 MethodSpecial,服务端接口级别 |
asyncallMethods | asyncallMethods 为可选配置 [List],含义为调用此服务时需要采用异步调用的方法名列表以及异步调用的方式。默认为空集合,即所有方法都采用同步调用 |
maxWaitTimeForCsAddress | 配置该参数,目的是当服务进行订阅时,会在该参数指定时间内,阻塞线程等待地址推送,避免调用该服务时因为地址为空而出现地址找不到的情况。若超过该参数指定时间,地址还是没有推送,线程将不再等待,继续初始化后续内容。 |
标签配置示例:
<hsf:consumer id="service" interface="com.taobao.edas.service.SimpleService"
version="1.1.0" group="test1" clientTimeout="3000"
target="10.1.6.57:12200?_TIMEOUT=1000" maxWaitTimeForCsAddress="5000">
<hsf:methodSpecials>
<hsf:methodSpecial name="sum" timeout="2000" ></hsf:methodSpecial>
</hsf:methodSpecials>
</hsf:consumer>
开发环境消费服务
完成代码和配置的开发任务之后,在 Eclipse 和 IDEA 中,可直接以 Ali-Tomcat 运行该服务(具体请参照文档 IDE 运行时启动配置。运行成功后,请参考开发环境搭建文档,在搭建好的 ConfigCenter 中查询到所需要消费的服务。
最后更新:2016-11-29 17:54:38
上一篇:
生产者实现服务__服务开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
下一篇:
HSF 特性使用__服务开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
弹性Web托管安装joomla,提示MB Language已被设置为默认。__产品相关问题_使用问题_弹性 Web 托管-阿里云
HBase 开发手册__开发人员指南_E-MapReduce-阿里云
设置短信签名__使用手册_短信服务-阿里云
域名状态信息__数据类型_API文档_域名-阿里云
生成证书__证书管理_用户指南_负载均衡-阿里云
阿里云等4家企业违反《网络安全法》被责令整改
Java: Spymemcache__客户端连接实例_快速入门_云数据库 Memcache 版-阿里云
阿里云云服务器 ECS典型应用场景
如何访问视频培训课程__视频培训课程_上云培训-阿里云
认证所需具备的知识__弹性计算认证(ACP级)_如何获得专业技术认证?_专业技术认证-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云