apache / apache/rocketmq

[Enhancement] Support ChangeInvisibleTime without incrementing message reconsume times

Open
#10,050 0 comments 2 reactions 0 assignees View on GitHub
type/enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.