跳到正文Skip to Content
快速开始Java 后端 SDK

Java 后端 SDK 快速开始

让 Java 后端服务(Spring / Servlet / 批处理 / 数据管道)上报应用日志 + 分布式 trace span,并经 W3C traceparent 与端上 SDK 端到端贯通。HMAC 使用 JDK 的 javax.crypto, JSON 使用自研序列化; 内置 HTTP 使用 Apache HttpClient 5.6.4, 最低编译目标为 Java 8, 不依赖 OpenTelemetry。 Maven / Gradle 会解析 httpcore5、httpcore5-h2 和 slf4j-api 等传递依赖, 不需要手动复制依赖 JAR。

对应 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 com.argusplatform.argus.Span; 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"), null); 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 经 JSON EventBatch 统一上报到 POST /v1/events(channel="trace"),与 go / node 后端 SDK 的 wire 格式一致。详见 分布式追踪。

行为约定

方面行为
批量log() 只入缓冲,后台线程按 flushIntervalMs 批量上报,或显式 flush()
HTTP 期限单次网络调用共享 10 秒取消期限, 持续零星响应字节不能刷新期限; 同步 DNS/JVM 暂停不承诺硬实时中断, 整个 retry/close 不等于 10 秒完成
重试网络错误、408/425/429/5xx 由 Argus 队列按 jitter 指数退避, 默认额外重试 3 次, 解析 Retry-After 并限制等待最长 30 秒; 耗尽回队后再尝试, 其他 4xx 永久丢弃. HTTP 库自身不自动重试
背压缓冲超 maxBuffer 时 drop-oldest(保留最新窗口),dropped() 可查丢弃数
HMAC每批按 METHOD\nPATH\nTS\nsha256hex(BODY) canonical 做 HMAC-SHA256 签名

所有上报均为 best-effort: 暂时失败按退避保留, 永久错误或背压淘汰通过 diagnostics 计数可查; 有界缓冲和异常隔离用于保护业务路径。

下一步