Java API调用说明
SDK引用
- 1、系统提供Java版本SDK,在调用API前,请参考业务接入-引用SDK的方式,在项目中引用Jar包。
- 2、如果您对API使用安全性有更高要求,可以在本SDK的基础上额外增加数据加密或签名验证等处理流程。
调用示例
完整调用示例,您可以参考项目源码:com.dtstep.lighthouse.core.test.api.DataQueryTest中的单元测试方法,修改相应参数(xl-lighthouse注册中心服务地址,统计项id、统计组秘钥、查询维度、时间参数等)即可直接运行!
如有问题,请随时联系开发者~
/**
* 对应API:LightHouse.dataQuery(int statId, String secretKey, String dimensValue, long startTime, long endTime)
* @throws Exception
*
* 通过维度查询在指定时间范围内的统计结果
*
* 1、对于没有统计维度的统计项,示例:<stat-item title="每分钟_订单金额统计" stat="sum(amount)"/> dimensValue参数传Null;
* 2、对于单维度的统计项,示例:<stat-item title="每分钟_各省份_订单金额统计" stat="sum(amount)" dimens="province"/> dimensValue参数传province字段对应的某个具体纬度值,如:山东或北京;
* 3、对于多维度的统计项,示例:<stat-item title="每分钟_各业务线_各省份_订单金额统计" stat="sum(amount)" dimens="biz;province"/> dimensValue参数传biz字段和province字段对应的数值,并使用分号分割,如:家电;山东 或 手机;上海
*/
@Test
public void dataQueryTest() throws Exception {
//LightHouse.init("10.206.6.11:4061,10.206.6.12:4061");//集群模式初始化
LightHouse.init("10.206.6.26:4061");//单机模式初始化
int statId = 1100594;
String secretKey = "Kq2Ts5PCBBqTqCFfKtbHekcQObDOZDQMVNuN6Ej5";
String dimensValue = null;
long t = System.currentTimeMillis();
long startTime = DateUtil.getDayStartTime(t);
long endTime = DateUtil.getDayEndTime(t);
//statId为对应统计项ID,secretKey为统计项所在统计组的秘钥,dimensValue为纬度值,startTime和endTime为查询起止时间范围
List<StatValue> statValues = LightHouse.dataQuery(statId,secretKey,dimensValue,startTime,endTime);
for (StatValue statValue : statValues) {
//返回结果:batchTime为对应批次时间,dimensValue为相应纬度值,value为统计结果,statesValue如果统计项中包含多个统计函数,则按按顺序返回每一个统计函数的结果
System.out.println("batchTime:" + statValue.getDisplayBatchTime() + ",dimensValue:" + statValue.getDimensValue() + ",value:" + statValue.getValue()
+ ",statesValue:" + JsonUtil.toJSONString(statValue.getStatesValue()));
}
System.out.println("ok!");
}
对外RPC接口说明
Lighthouse.init(String locators)
参数:locators,lighthouse远程RPC服务注册中心配置信息
作用:用于RPC服务初始化。
LightHouse.queryGroupInfo(String token)
参数:token,统计组标识
作用:用于判断统计组是否存在和校验统计组秘钥信息。
LightHouse.queryStatInfo(int statId)
参数:statId,统计项id
作用:用于判断统计项是否存在和校验统计项秘钥信息。
LightHouse.stat(String token,final String secretKey,Map paramMap,long timestamp)
参数: token,统计组标识;secretKey,统计组秘钥;paramMap,原始消息参数信息;timestamp,消息事件时间戳;
作用:用于上报统计原始消息信息。
LightHouse.stat(String token,final String secretKey,Map paramMap,int repeat, long timestamp)
参数: token,统计组标识;secretKey,统计组秘钥;paramMap,原始消息参数信息;repeat,统计消息重复上报次数,默认为1,timestamp,消息事件时间戳;
作用:用于上报统计原始消息信息。
LightHouse.dataQuery(int statId, String secretKey, String dimensValue, long startTime, long endTime)
参数:statId,统计项标识;secretKey,所属统计组秘钥;dimensValue,维度信息;startTime:查询开始时间;endTime:查询结束时间;
作用:通过指定维度和时间范围查询统计结果数据。
LightHouse.dataQuery(int statId, String secretKey, String dimensValue, List batchList)
参数:statId,统计项标识;secretKey,所属统计组秘钥;dimensValue,维度信息;batchList,批次时间;
作用:通过指定维度和批次时间查询统计结果数据。
LightHouse.dataQueryWithDimensList(int statId, String secretKey, List dimensValueList, long startTime,long endTime)
参数:statId,统计项标识;secretKey,所属统计组秘钥;dimensValueList,维度信息列表;batchList,批次时间;
作用:批量查询多条维度参数的统计结果数据。
LightHouse.dataQueryWithDimensList(int statId, String secretKey, List dimensValueList, List batchList)
参数:statId,统计项标识;secretKey,所属统计组秘钥;dimensValue,维度信息列表(没有维度参数传null,多维度统计按照统计项维度配置使用分号分割);batchList,批次时间;
作用:按照批次时间,批量查询多条维度参数的统计结果数据。
LightHouse.limitQuery(int statId, String secretKey, Long batchTime)
该接口需要v2.2.7以上版本支持!
参数:statId,统计项标识;secretKey,所属统计组秘钥;batchTime,批次时间;
作用:按照批次时间,查询Limit的统计结果。
参数说明
startTime/endTime参数
查询数据的起止时间,请使用13位时间戳。
batchList参数
系统按照统计项TimeParam参数划分统计周期,使用统计周期的开始时间作为统计周期的批次时间,在传递batchTime/batchList相关参数时,请使用13位时间戳。
比如:
统计业务每分钟访问PV,则2024-05-02 13:15:00代表2024-05-02 13:15:00 至 2024-05-02 13:16:00的统计数据对应的批次时间。
统计业务每2小时访问UV,则2024-05-02 14:00:00代表2024-05-02 14:00:00 至 2024-05-02 16:00:00的统计数据对应的批次时间。
统计业务每天的订单量,则2024-05-02 00:00:00代表2024-05-02 00:00:00 至 2024-05-02 23:59:59的统计数据对应的批次时间。
dimensValue参数
没有维度参数传null,多维度统计按照统计项维度配置使用分号分割。
比如:
- 查询业务每天订单金额,
<stat-item title="每天_订单金额" stat="sum(amount)" />
该示例没有统计维度则传null。
- 查询每个各省份订单金额。
<stat-item title="每天_各省份_订单金额" stat="sum(amount)" dimens="provinceId"/>
该示例维度参数为省份,请传省份参数信息,格式示例:10101 或 10102。
- 查询每个省份各个业务线的订单金额,该示例为维度查询,请按照
<stat-item title="每天_各省份_各业务线_订单金额" stat="sum(amount)" dimens="provinceId;bizId"/>
该示例维度参数为省份和业务线,请按照provinceId;bizId的格式拼接维度参数,格式示例:10101;1 或 10102;2。