Java SDK
Java SDK最低兼容JDK1.8版本
当前最新版本1.0.8
#1. 引入Maven包
<dependency>
<groupId>cn.entrolysis</groupId>
<artifactId>report-sdk</artifactId>
<version>1.0.8</version>
</dependency>
#2. 使用方法
#2.1 Consumer 初始化
EsReportConsumer consumer = new EsReportConsumer(SERVER_HOST, SERVER_PORT, GAME_ID);
EsReportConsumer consumer = new EsReportConsumer(SERVER_HOST, SERVER_PORT, SNOWFLAKE, GAME_ID, SOCKET_SIZE);
参数名 | 参数描述 |
---|---|
SERVER_HOST | 数据服务所在地址 |
SERVER_PORT | 数据服务所在端口 |
SNOWFLAKE | 雪花算法、用于创建消息id、避免数据重复上报 |
GAME_ID | 熵析数据平台所属游戏id、可不传、则使用默认算法 |
SOCKET_SIZE | socket链接数,可不传,默认创建10个连接 |
#2.2 上报数据封装 - 构建 ReportDto
请注意:无论是事件数据还是账号数据,所上报的属性都应先在 元事件-事件属性、用户属性中添加对应属性。 上报数据会根据所添加的属性进行过滤与数据格式校验
#2.2.1 事件数据构建
// 事件数据封装
JSONObject data = new JSONObject();
// 必要属性
// 游戏id
data.put("_game_id", "1");
// 账号id
data.put("_account_id", "123");
// 事件发生时间 - 毫秒级
data.put("_event_time", System.currentTimeMillis());
// 事件发生时间 - 秒级
data.put("_event_time_seconds", System.currentTimeMillis() / 1000);
// 数据来源 - 当前必须标记为data_center,否则会被当做非法数据遗弃
data.put("_data_origin", "data_center");
// 其余自定义属性 - 非必要属性
data.put("_role_id", "123456");
data.put("_role_name", "role_name");
// 构造出最终ReportDto
ReportDto reportDto = ReportDto.builder().id(id).appid(appId).type(type).event_key(eventKey).values(values).build();
字段名 | 字段描述 |
---|---|
id | 所属账号id |
appid | 所属项目的id (可在熵析数据平台-项目管理-项目配置中查看) |
type | 数据类型:event(事件) |
event_key | 所属事件、该字段只在事件上报需要,在用户上报中不需要携带 |
values | 上报数据 |
#2.2.2 用户、角色数据构建
// userArr中存放的是需要更新的字段,如下列例子中,将更新name、age两个字段
JSONArray userArr = new JSONArray();
// 每个需要更新的字段需要构建成一个JSONObject,必须带有action、key、value 三个属性
JSONObject user = new JSONObject();
user.put("action", "add_or_update");
user.put("key", "name");
user.put("value", "new_name");
userArr.add(user);
user = new JSONObject();
user.put("action", "add_or_update");
user.put("key", "age");
user.put("value", 18);
userArr.add(user);
// 构造出最终ReportDto
ReportDto reportDto = ReportDto.builder().id(id).appid(appId).type(type).values(userArr).build();
字段名 | 字段描述 |
---|---|
id | 所属账号id |
appid | 所属产品id (可在在熵析数据平台-项目管理-项目配置中查看) |
type | 数据类型:user(账号) |
values | 上报数据 |
#3. 数据操作
#3.1 添加数据至上报队列
// 调用consumer的add功能
// 该方法只是将数据添加至队列,并不会马上推送消息,当 满200条数据/满1分钟 推送一次消息
consumer.add(reportDto);
#3.2 主动推送数据
// 调用consumer的push功能
// 请注意、该方法会立刻向数据服务推送消息、如不主动调用该方法,则 满200条数据/满1分钟 推送一次消息
consumer.push();