Skip to Content
快速开始Java 后端 SDK

Java 后端 SDK 快速开始

让 Java 后端服务(Spring / Servlet / 批处理 / 数据管道)上报应用日志 + 分布式 trace span,并经 W3C traceparent 与端上 SDK 端到端贯通。纯 JDK 实现,零第三方运行时依赖(HMAC 用 javax.crypto, HTTP 用 HttpURLConnection),最低 Java 8。

对应 SDK:sdks/java-backend(坐标 com.argusplatform:argus-backend)。 跨语言 API 对照见 后端 SDK API 矩阵 

引入依赖

在 Maven / Gradle 引入 com.argusplatform:argus-backend,并配置数据源名称(DSN)——格式详见 DSN 与 HMAC 签名

export ARGUS_DSN='argus://<public_key>:<secret_key>@<host:port>/<project_id>'

初始化

import com.argusplatform.argus.ArgusClient; import java.util.Collections; // 读 ARGUS_DSN 环境变量 ArgusClient argus = ArgusClient.fromEnv(); // 或显式 + 调参: // ArgusClient argus = ArgusClient.builder("argus://pub:sec@ingest.argus-tools.app/proj") // .serviceName("checkout-api").flushIntervalMs(5000).maxBatch(512).maxBuffer(10000).build();

上报日志与 trace span

argus.log("info", "order created", Collections.singletonMap("order_id", "o-123"), traceId); argus.log("error", "payment failed"); // trace span:try-with-resources 自动 end;错误状态显式 setStatus try (Span span = argus.startSpan("process_payment", "server", Collections.singletonMap("order.id", "o-123"), null)) { // 子 span:传 span.context() 继承同一条 trace Span child = argus.startSpan("charge_card", "client", null, span.context()); child.end(); } argus.close(); // 停止后台 flush 并最后上报一次(实现 AutoCloseable,可 try-with-resources)

端到端 Trace:把链路传给下游

startSpan 产生的 span 上下文可注入出站请求头,下游服务的 Argus SDK 会继承同一条 trace。trace span 经 POST /v1/traces 上报,与 go / node 后端 SDK 的 JSON wire 逐字节一致。详见 分布式追踪

行为约定

方面行为
批量log() 只入缓冲,后台线程按 flushIntervalMs 批量上报,或显式 flush()
重试5xx / 网络错误指数退避重试(默认 3 次);4xx(鉴权 / payload)立即丢弃不重试
背压缓冲超 maxBuffer 时 drop-oldest(保留最新窗口),dropped() 可查丢弃数
HMAC每批按 METHOD\nPATH\nTS\nsha256hex(BODY) canonical 做 HMAC-SHA256 签名

所有上报均为 best-effort:上报失败只丢弃、绝不影响业务请求

下一步