Skip to content

Commit dc99997

Browse files
committed
docs: changelog for 4.0.0 (date TBD)
Captures the user-facing changes since RC2: the NATS JetStream backend and pluggable MessageBroker SPI, capability-aware dashboard, consumer- aware peek and queue-detail redesign for fan-out topologies, NATS pause/soft-delete admin ops, the new Job.getConversionException API for middleware, and the additional modules (rqueue-nats, rqueue-redis, rqueue-web) now published to Maven Central. Also notes the migration guidance: existing Redis users keep working, NATS users wire a JetStream MessageBroker bean, and /explore gained a nullable consumerName query parameter.
1 parent de928e0 commit dc99997

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

docs/CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,63 @@ layout: default
88

99
All 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

Comments
 (0)