XL-LightHouse
新一代实时业务监控系统

Java数据上报API

作者:admin
最后编辑:2025-06-17 20:24:00

本篇文章介绍如何使用Java版本API上报统计原始消息,在调用API之前请首先确保与部署服务器的4061端口和18101端口网络互通。

Demo调用演示

您可以下载以下项目,查看调用演示!

https://github.com/xl-xueling/lighthouse-testing.git
或
https://gitee.com/xl-xueling/lighthouse-testing.git

SDK引用

  • 请使用2.3.5或以上版本
<dependency>
    <groupId>com.dtstep.lighthouse</groupId>
    <artifactId>lighthouse-shaded-client</artifactId>
    <version>2.3.5</version>
</dependency>

数据上报API说明

Lighthouse.init(String locators)

1、参数信息

  • locators,LightHouse-RPC服务注册中心配置参数。

2、接口作用

  • 用于调用方与LightHouse-RPC服务之间连接初始化。

LightHouse.stat(String token,final String secretKey,Map<String,Object> paramMap,long timestamp)

1、参数信息

  • token,统计组标识;
  • secretKey,统计组秘钥,请在“工程列表 -> 工程管理 -> 选择相应统计组 -> 点击”更多“按钮 -> 秘钥”菜单项中获取;
  • paramMap,原始消息参数信息;
  • timestamp,消息事件13位时间戳,系统依据该时间戳划分统计窗口;

2、接口作用

  • 用于上报统计原始消息信息。

LightHouse.stat(String token,final String secretKey,Map<String,Object> paramMap,int repeat, long timestamp)

1、参数信息

  • token,统计组标识;
  • secretKey,统计组秘钥,请在“工程列表 -> 工程管理 -> 选择相应统计组 -> 点击”更多“按钮 -> 秘钥”菜单项中获取;
  • paramMap,原始消息参数信息;
  • repeat,统计消息重复上报次数,默认为1;
  • timestamp,消息事件13位时间戳,系统依据该时间戳划分统计窗口;

2、接口作用

  • 用于上报统计原始消息信息,repeat参数表示同样的消息重复上报几次。

调用示例

package com.dtstep.lighthouse.core.test.api;

import com.dtstep.lighthouse.client.LightHouse;
import com.dtstep.lighthouse.common.random.RandomID;
import org.junit.Test;

import java.util.HashMap;
import java.util.concurrent.ThreadLocalRandom;

public class RpcStatTest {

    static {
        try{
            //修改rpc服务注册中心地址,集群模式为一主一从,默认为部署集群的前两个节点IP,使用逗号分割,单机模式为当前节点IP
            //LightHouse.init("10.206.6.11:4061,10.206.6.12:4061");//集群模式初始化
            LightHouse.init("10.206.6.31:4061");//单机模式初始化
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
    
    @Test
    public void orderStat() throws Exception {
        long t = System.currentTimeMillis();
        for(int i=0;i<6657;i++){
            HashMap<String,Object> paramMap = new HashMap<>();
            paramMap.put("order_id", RandomID.id(6));
            paramMap.put("biz", RandomID.id(2));
            paramMap.put("user_id", RandomID.id(6));
            Double d = ThreadLocalRandom.current().nextDouble(1000);
            paramMap.put("amount",String.format("%.3f", d));//防止上面随机数出现科学计数法
            LightHouse.stat("N4C:order_stat","YEWU3tGjNQL1AevvC9FjNj9SCuvzpYPmLY5akKYz",paramMap,t);
        }
        System.out.println("send ok!");
        Thread.sleep(30000);//client为异步发送,防止进程结束时内存中部分消息没有发送出去
    }
}

补充说明

  • 本SDK提供基础验签机制,如果您对SDK使用安全性方面有更高要求,可以在本SDK的基础上额外增加数据加密或签名验证等处理流程。