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:上报失败只丢弃、绝不影响业务请求。