All notable changes to com.babelqueue:babelqueue-spring are documented here.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
The envelope wire format is versioned separately by meta.schema_version
(currently 1) — see the contract at babelqueue.com.
- OpenTelemetry
traceparenttransport wiring (ADR-0028, v0.2).BabelQueuePublishergainspublishWithHeaders(Envelope, Map<String,String>)— the produce-side seam the optional corecom.babelqueue.otel.HeaderSenderwires to: it sends through aMessagePostProcessorthat writes out-of-band headers (e.g. a W3Ctraceparent) onto the AMQPMessagePropertiesheaders beside the contractx-*headers (SpringHeaders.apply: a contract header always wins a key collision), never inside the frozen envelope (GR-1). NewSpringHeaders.of(Message)/of(MessageProperties)surface a delivered message's headers as aMap<String,String>, the consume-side seam a@RabbitListenerwires toTracing.wrapHandler(tracer, handler, Supplier), so a carriedtraceparentmakes the consumer span a true child of the producer span. A header-less publish is equivalent to before;trace_idis preserved (GR-4);schema_versionstays 1. No new runtime dependency — the header seam is a plainMap<String,String>; OpenTelemetry is needed only by callers who opt in.
- Require
com.babelqueue:babelqueue-core 1.5.0(the out-of-band header-carrier seam).
1.0.0 - 2026-06-07
1.0.0 — the public API is now SemVer-stable: breaking changes require a MAJOR,
following the deprecation policy. The wire envelope is unchanged
(schema_version: 1). Full reference at babelqueue.com.
- Require
com.babelqueue:babelqueue-core 1.0.0.
- Build adds JaCoCo (line-coverage gate ≥90%, bound to
verify) and SpotBugs (effort=Max,threshold=Medium,spotbugs-exclude.xmlfor the read-only-envelope EI_EXPOSE patterns); both run in CI viamvn verify. Added aBabelQueuePublisher(PolyglotMessage)test to clear the gate.
0.1.0 - 2026-06-06
BabelQueueMessageConverter— a Spring AMQPMessageConverterthat encodes the canonical BabelQueue envelope on produce (with the contract AMQP properties:type= URN,correlationId= trace_id,messageId= meta.id,x-schema-version/x-source-lang/x-attempts) and decodes it on consume, returning a coreEnvelope. Rejects non-conformant messages.BabelQueuePublisher— ergonomic producer overRabbitTemplate(publish(urn, data, queue)/publish(PolyglotMessage)).BabelQueueAutoConfiguration— Spring Boot auto-configuration exposing the converter (so Boot wires it into theRabbitTemplateand listener factory) and the publisher; both back off if the application defines its own.BabelQueueProperties—babelqueue.default-queue.
- Pre-1.0: the public API may change before the
1.0.0tag. - Built on the framework-agnostic
com.babelqueue:babelqueue-core; targets Spring Boot 3 and Java 17+.