Skip to content

Commit 4452afe

Browse files
sonus21claude
andcommitted
build: bump version to 4.0.0-RC8 and update CHANGELOG
RC8 highlights: NATS ADR-51 scheduling, dashboard move/re-enqueue for NATS, long-running job keep-alive via +WIP, duplicateWindow removed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 77039e9 commit 4452afe

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ ext {
8484

8585
subprojects {
8686
group = "com.github.sonus21"
87-
version = "4.0.0-RC7"
87+
version = "4.0.0-RC8"
8888

8989
dependencies {
9090
// https://mvnrepository.com/artifact/org.springframework/spring-messaging

docs/CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,38 @@ foundational Spring Boot 4 and Jackson 3 migration notes; RC3 for the Java 17
1818
baseline change; RC4–RC6 below for the NATS backend, broker SPI, dashboard
1919
work, and middleware additions that build on top.
2020

21+
## Release [4.0.0.RC8] 2026-05-09
22+
23+
{: .highlight}
24+
Release candidate.
25+
26+
### Features
27+
* **NATS message scheduling (ADR-51)** — delayed and periodic message delivery
28+
is now fully supported on NATS servers ≥ 2.12 via the `Nats-Next-Deliver-Time`
29+
header (ADR-51). `RqueueMessageEnqueuer.enqueueIn()` and `enqueuePeriodic()`
30+
work transparently; the broker advertises `supportsDelayedEnqueue=true` when
31+
the connected server supports scheduling. Older servers continue to work with
32+
scheduling silently disabled.
33+
* **Dashboard move-message for NATS**`NatsRqueueUtilityService.moveMessage()`
34+
is now implemented: walks the source JetStream stream, republishes each message
35+
to the destination stream, and hard-deletes the source sequence. The dashboard
36+
"move messages" panel is now functional for NATS queues.
37+
* **Dashboard re-enqueue for NATS**`enqueueMessage()` looks up the message
38+
from the metadata store and republishes it immediately (no
39+
`Nats-Next-Deliver-Time` header) so the worker picks it up on the next poll.
40+
* **Long-running job keep-alive**`Job.updateVisibilityTimeout(Duration)` now
41+
issues a NATS `+WIP` (work-in-progress) signal that resets the consumer's
42+
`ackWait` timer, preventing redelivery while a long-running handler is still
43+
active.
44+
45+
### Changes
46+
* **`duplicateWindow` removed from stream config** — the per-stream
47+
`DuplicateWindow` setting has been removed. Any job running longer than a
48+
finite duplicate window could trigger unexpected dedup expiry on retry. JetStream
49+
now manages deduplication server-side with its own defaults. The dedup key shape
50+
(`id-at-processAt`) still guarantees correctness for periodic messages across
51+
periods.
52+
2153
## Release [4.0.0.RC7] 2026-05-08
2254

2355
{: .highlight}

0 commit comments

Comments
 (0)