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();