Repository navigation
Tags: BabelQueue/babelqueue-java
Tags
feat(gdpr): runtime field encryption for x-gdpr-sensitive — Java core… … (ADR-0030) The SDK-enforcement half of GDPR governance (mirrors the Go reference). New com.babelqueue.gdpr: a caller-bound Cipher interface (encrypt/decrypt onto KMS/Vault) + a JDK-only AesGcmCipher reference (javax.crypto, AES-256-GCM), and Gdpr.protect/unprotect that encrypt/decrypt exactly the schema's x-gdpr-sensitive leaves in place (nested + array + root), byte-for-byte round-trip, wrong key -> DecryptException. SensitivePaths.of parses x-gdpr-sensitive (validation-neutral); a small public JsonValues bridges the package-private codec for canonical leaf round-trips. data stays pure JSON (ciphertext string) so the envelope is frozen (GR-1, schema_version 1, trace_id preserved); the Cipher seam keeps the core zero-dep (GR-7). Opt-in; schema validation on cleartext. v1.7.0.
feat(outbox): transactional outbox helper — Java core (ADR-0029) Ports the producer-side transactional outbox in the new com.babelqueue.outbox: Outbox.write encodes the frozen envelope and persists it via a caller-bound OutboxStore inside the caller's own DB transaction (no dual-write), and OutboxRelay.flush/drain forwards stored rows verbatim through a byte-typed OutboxTransport — markPublished only after publish returns, a throwing publish -> markFailed + linear backoff (row stays pending), one poison row never blocks the batch. At-least-once handoff; consumers dedupe on meta.id. Frozen bytes ride verbatim (GR-1/4/5, defensive-cloned); OutboxStore is an interface so the core stays zero-dep (GR-7). v1.6.0.
feat(otel): W3C traceparent transport-header propagation — Java core … …(ADR-0028) Mirrors the Go reference: a Map<String,String> header-carrier seam (HeaderSender produce-side + a Supplier<Map> consume-side on wrapHandler) and W3C traceparent inject/extract in the otel package. The producer writes the active span's traceparent onto the carrier (still stamping trace_id); the consumer starts its span as a child of the remote parent (true cross-hop linkage). No header falls back to the v0.1 trace_id behaviour. Uses the in-box W3CTraceContextPropagator from opentelemetry-api (already optional) — no new dependency (GR-7); envelope frozen (GR-1); trace_id preserved (GR-4). Per-transport wiring (babelqueue-java- sqs/-redis/-spring) is a documented follow-up. Bump to 1.5.0.
PreviousNext