@@ -8,6 +8,63 @@ layout: default
88
99All notable user-facing changes to this project are documented in this file.
1010
11+ ## Release [ 4.0.0] TBD
12+
13+ {: .highlight}
14+ First stable 4.0.0 release. Targets Spring Boot 4.x and Spring Framework 7.x on
15+ Java 21. See the RC1 / RC2 entries below for the foundational Spring Boot 4 and
16+ Jackson 3 migration notes — those still apply.
17+
18+ ### Features
19+ * ** NATS JetStream backend** — added a new ` rqueue-nats ` module that lets Rqueue
20+ run on NATS JetStream as the message broker. Supports both Limits-retention
21+ and WorkQueue-retention streams, durable consumers, and ack/nack delivery
22+ semantics.
23+ * ** Pluggable broker SPI** — the queueing layer was separated from Redis behind
24+ a ` MessageBroker ` SPI with a ` Capabilities ` model. The dashboard, explorer,
25+ and admin paths now adapt to backend capabilities (nav tabs, charts, data-type
26+ labels, queue-size accounting) instead of assuming Redis primitives.
27+ * ** Consumer-aware peek** — added a consumer-aware ` peek ` overload on the broker
28+ SPI. The dashboard explorer can browse a specific consumer's outstanding
29+ messages on Limits-retention streams, skipping already-acked ranges and
30+ reflecting per-consumer ack floors. Useful for fan-out topologies where each
31+ durable has a different delivery position.
32+ * ** NATS-aware queue detail page** — redesigned queue detail with a hero panel,
33+ chip strip, per-consumer Subscribers table (with separate Pending and
34+ In-Flight columns and a Workers column), and a Terminal Storage card. Pending
35+ shows yet-to-deliver count; In-Flight shows messages currently being
36+ processed. Limits-retention queues render approximate sizes with a ` ~ ` prefix.
37+ * ** Pause / soft-delete admin ops for NATS queues** — operators can pause and
38+ soft-delete NATS queues from the dashboard, with capability-gated controls so
39+ unsupported actions do not appear on backends that cannot honour them.
40+ * ** Message-converter exception exposed to middleware** — ` Job ` now exposes
41+ ` getConversionException() ` (and a ` hasConversionException() ` default) so
42+ middleware can detect and react to inbound deserialization failures (route to
43+ DLQ, alert, attempt a fallback decode) instead of being unable to distinguish
44+ a converter error from a legitimately-String payload.
45+ * ** Pluggable publishing of additional modules** — ` rqueue-nats ` , ` rqueue-redis ` ,
46+ and ` rqueue-web ` are now published to Maven Central alongside ` rqueue-core ` ,
47+ ` rqueue-spring ` , and ` rqueue-spring-boot-starter ` .
48+
49+ ### Fixes
50+ * ** NATS ack/nack under fan-out** — fixed an in-flight key collision that could
51+ cause ack/nack to target the wrong NATS message when multiple consumers were
52+ fanning out from the same stream.
53+ * ** Consumer-name resolution** — ` resolvedConsumerName ` now uses a single
54+ consumer-name suffix, preventing duplicated suffixing under repeated lookups.
55+ * ** Peek base sequence** — NATS peek now bases on ` ackFloor ` rather than
56+ ` delivered.streamSeq ` , so the explorer shows the correct un-acked tail
57+ instead of skipping past acked-but-not-yet-deleted messages.
58+
59+ ### Migration Notes
60+ * Backends are now selected via the ` MessageBroker ` SPI. Existing Redis
61+ applications continue to work without configuration changes — a Redis broker
62+ is wired by default. Applications wanting NATS should add ` rqueue-nats ` and
63+ configure a JetStream ` MessageBroker ` bean.
64+ * The dashboard ` /explore ` API gained a ` consumerName ` query parameter
65+ (nullable). Callers using the REST API directly should pass ` null ` to
66+ preserve existing behaviour or a specific consumer name to scope the peek.
67+
1168## Release [ 4.0.0.RC2] 24-Mar-2026
1269
1370{: .highlight}
0 commit comments