java sdk文档_开发手册 - JAVA SDK

JAVA SDK

1. Maven 坐标

com.alipay.sofa

registry-client-all

${registry.client.version}

2. 创建SOFARegistry客户端实例

构建 SOFARegistry 客户端实例的关键代码如下:RegistryClientConfigconfig=DefaultRegistryClientConfigBuilder.start().setRegistryEndpoint("127.0.0.1").setRegistryEndpointPort(9603).build();

DefaultRegistryClientregistryClient=newDefaultRegistryClient(config);

registryClient.init();

其中注册中心相关的属性通过 DefaultRegistryClientConfigBuilder 构建指定,该类包含以下关键属性:publicclassDefaultRegistryClientConfigBuilder{

privateStringinstanceId;

privateStringzone=DEFAULT_ZONE;

privateStringregistryEndpoint;

privateintregistryEndpointPort=9603;

privateStringdataCenter=DEFAULT_DATA_CENTER;

privateStringappName;

privateintconnectTimeout=3000;

privateintsocketTimeout=3000;

privateintinvokeTimeout=1000;

privateintrecheckInterval=500;

privateintobserverThreadCoreSize=5;

privateintobserverThreadMaxSize=10;

privateintobserverThreadQueueLength=1000;

privateintsyncConfigRetryInterval=30000;

}属性名属性类型描述instanceIdString实例ID,发布订阅时需要使用相同值,数据唯一标识由dataId+group+instanceId组成,默认值 DEFAULT_INSTANCE_ID。

zoneString单元化所属 zone,默认值 DEFAULT_ZONE。

registryEndpointString服务端任一 Session 节点地址。

registryEndpointPortintSession 节点配置的 session.server.httpServerPort 端口值,默认值 9603。

dataCenterString数据中心,默认值 DefaultDataCenter。

appNameString应用名。

connectTimeoutint与服务端建立连接超时时间,默认值 3000ms。

socketTimeoutint访问服务端 REST 接口超时时间,默认值 3000ms。

invokeTimeoutint调用服务端服务超时时间,默认值 1000ms。

recheckIntervalint检测任务队列间隔时间,默认值 500ms。

observerThreadCoreSizeint处理服务端推送数据线程池核心线程大小,默认值 5。

observerThreadMaxSizeint处理服务端推送数据线程池最大线程大小,默认值 10。

observerThreadQueueLengthint处理服务端推送数据线程池队列大小,默认值 1000。

syncConfigRetryIntervalint同步服务端列表间隔时间,默认值 30000ms。

3. 发布数据

发布数据的关键代码如下:// 构造发布者注册表

PublisherRegistrationregistration=newPublisherRegistration("com.alipay.test.demo.service:1.0@DEFAULT");

registration.setGroup("TEST_GROUP");

registration.setAppName("TEST_APP");

// 将注册表注册进客户端并发布数据

Publisherpublisher=registryClient.register(registration,"10.10.1.1:12200?xx=yy");

// 如需覆盖上次发布的数据可以使用发布者模型重新发布数据

publisher.republish("10.10.1.1:12200?xx=zz");

发布数据的关键是构造 PublisherRegistration,该类包含三个属性:属性名属性类型描述dataIdString数据ID,发布订阅时需要使用相同值,数据唯一标识由 dataId + group + instanceId 组成。

groupString数据分组,发布订阅时需要使用相同值,数据唯一标识由 dataId + group + instanceId 组成,默认值 DEFAULT_GROUP。

appNameString应用 appName。

4. 订阅数据

订阅数据的关键代码如下:// 创建 SubscriberDataObserver

SubscriberDataObserversubscriberDataObserver=newSubscriberDataObserver(){

@Override

publicvoidhandleData(StringdataId,UserDatadata){

System.out.println("receive data success, dataId: "+dataId+", data: "+userData);

}

};

// 构造订阅者注册表,设置订阅维度,ScopeEnum 共有三种级别 zone, dataCenter, global

StringdataId="com.alipay.test.demo.service:1.0@DEFAULT";

SubscriberRegistrationregistration=newSubscriberRegistration(dataId,subscriberDataObserver);

registration.setGroup("TEST_GROUP");

registration.setAppName("TEST_APP");

registration.setScopeEnum(ScopeEnum.global);

// 将注册表注册进客户端并订阅数据,订阅到的数据会以回调的方式通知 SubscriberDataObserver

Subscribersubscriber=registryClient.register(registration);

订阅数据需要创建两个关键类,分别是 SubscriberDataObserver 和 SubscriberRegistration,前者是收到服务端数据后的回调接口,后者是订阅者注册表,用于向服务端注册订阅信息。

4.1 SubscriberDataObserver

SubscriberDataObserver 仅包含一个方法:voidhandleData(StringdataId,UserDatadata);

参数含义名称类型描述dataIdString数据ID

dataUserData数据内容

UserData 包装了数据内容,该类包含以下方法:publicinterfaceUserData{

Map>getZoneData();

StringgetLocalZone();

}getLocalZone: 返回当前zone;

getZoneData: 返回以 zone 为 key,每个 zone 的数据为 value 的数据。

4.2 SubscriberRegistration

SubscriberRegistration 包含以下四个属性:属性名属性类型描述dataIdString数据ID,发布订阅时需要使用相同值,数据唯一标识由 dataId + group + instanceId 组成。

groupString数据分组,发布订阅时需要使用相同值,数据唯一标识由 dataId + group + instanceId 组成,默认值 DEFAULT_GROUP。

appNameString应用appName

scopeEnumScopeEnum枚举值,表示 Zone、DataCenter、Global 三种维度之一。

subscriberDataObserverSubscriberDataObserver服务端数据后的回调接口。

5. 注销发布及订阅

取消发布订阅的接口如下:intunregister(StringdataId,Stringgroup,RegistryTyperegistryType);

请求参数参数名参数类型描述dataIdString数据ID。

groupString数据分组。

registryTypeRegistryType枚举值,表示 PUBLISHER、SUBSCRIBER、CONFIGURATOR 三者维度之一。

方法返回值为 int 类型,表示注销的发布者及订阅者个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值