[Enhancement] Support ChangeInvisibleTime without incrementing message reconsume times
- Dominant language
- Java
- Stars
- 22.6k
- Forks
- 12k
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 26
Description
### Before Creating the Enhancement Request
- [x] I have confirmed that this should be classified as an enhancement rather than a bug/feature.
### Summary
Support NACK (negative acknowledgment) without incrementing message reconsume times. By adding a suspend flag, consumers can requeue messages for retry without increasing the message's reconsumeTimes counter.
### Motivation
In RocketMQ's Pop consumption mode, any NACK operation increments the message's reconsumeTimes counter. When the retry count reaches the maximum value, the message enters the Dead Letter Queue (DLQ). However, in certain business scenarios, consumers may need to
temporarily delay processing a message, but this delay should not be considered a true retry failure.
### Describe the Solution You'd Like
Add a suspend boolean flag to the message processing pipeline. When this flag is true, message retry does not increment reconsumeTimes.
### Describe Alternatives You've Considered
No
### Additional Context
_No response_
Contributor guide
Research direction
No files, tests, or entry points are named. Start by tracing the message processing pipeline and the code that increments reconsumeTimes for NACK operations. Done means a suspend flag can requeue a message without incrementing reconsumeTimes, while ordinary retries retain their current behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100