You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
7
+
## 5.3.5 - 2026-02-05
8
+
### Fixed
9
+
- Requester now deduplicates reply messages by `replyIndex` to prevent corrupt results when replies are duplicated (e.g. after broker disconnect/reconnect during in-place Solace broker updates).
10
+
- Dedup bookkeeping is cleaned up when a request completes, errors, or times out.
In some operational scenarios (e.g. Solace in-place broker updates / short disconnects / reconnects) the same request can be sent twice and the replier may therefore produce **duplicate replies**.
605
+
606
+
To make request-reply robust against such duplicate delivery, the requester keeps per-request bookkeeping and **deduplicates incoming reply messages by `replyIndex`**:
607
+
608
+
- If the requester receives multiple messages with the same `replyIndex`, only the first one is processed; later duplicates are ignored.
609
+
- This also supports range indices such as `replyIndex="0-45"` (used when replies are grouped into an SDTStream). The entire grouped message will be consumed only once.
610
+
- Terminal messages (finish/error) are always processed, even if they share a `replyIndex` with another message.
611
+
612
+
#### Memory / cleanup
613
+
614
+
The dedup bookkeeping is scoped to a single in-flight request (correlationId).
615
+
It is cleared automatically when the request completes successfully, completes with a remote error, or times out.
616
+
617
+
> Note: For best results, repliers should always set `totalReplies` and `replyIndex` consistently on every reply message (this is done automatically when using `RequestReplyMessageHeaderSupportService.wrap*`).
Copy file name to clipboardExpand all lines: src/main/java/community/solace/spring/cloud/requestreply/service/header/RequestReplyMessageHeaderSupportService.java
0 commit comments