Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] Pop retry topic v2 #7543

Closed
1 task done
drpmma opened this issue Nov 7, 2023 · 1 comment · Fixed by #7544, #7655, #7665 or #7734
Closed
1 task done

[Enhancement] Pop retry topic v2 #7543

drpmma opened this issue Nov 7, 2023 · 1 comment · Fixed by #7544, #7655, #7665 or #7734

Comments

@drpmma
Copy link
Contributor

drpmma commented Nov 7, 2023

Before Creating the Enhancement Request

  • I have confirmed that this should be classified as an enhancement rather than a bug/feature.

Summary

目前在pop机制中使用的retry topic的格式是形如 "%RETRY%group_topic",其中分隔符"_"是一个合法字符,可以被使用在topic或者group中,因此会导致两个问题。

  1. pop retry topic重复,比如由group_a,topic组成的retry topic,和由group,a_topic组成的retry topic均为%RETRY%group_a_topic
  2. 由于采用了合法字符"_"作为分隔符,因此没办法根据retry topic反向得出group和topic,在消息通知和需要拆分group的场景都会存在问题

因此本方案提出了pop retry topic v2,以"+"为分割符,即形如"%RETRY%group+topic",其中"+"为topic和group无法使用的字符,因此解决了上述两个问题,同时"+"也隐式的表达了订阅的含义。

Currently, in the pop mechanism, the format used for the retry topic is as the form of "%RETRY%group_topic". The underscore character "_" serves as a valid separator, which can be used within both the topic and group. Consequently, this situation leads to two issues:

  1. Repetition of pop retry topics: For instance, a retry topic composed of group_a and topic, and another retry topic composed of group and a_topic, both result in "%RETRY%group_a_topic".
  2. Due to the utilization of the underscore character "_" as a separator, it becomes impossible to deduce the group and topic from the retry topic. This presents challenges in scenarios involving message notifications and the need to split the group.

Therefore, this proposal suggests the implementation of pop retry topic v2, employing the "+" as the separator. The new format would appear as "%RETRY%group+topic". Since "+" is not a permissible character in either topics or groups, it effectively resolves the aforementioned issues. Furthermore, the use of "+" implicitly expresses the subscription meaning.

Motivation

Fix the issue of original pop retry topic.

Describe the Solution You'd Like

Retry topic v2 as the format of "%RETRY%group+topic" where "+" is the separator.

Describe Alternatives You've Considered

No

Additional Context

No response

drpmma added a commit that referenced this issue Nov 23, 2023
* Implement pop retry topic v2

* Use pop retry topic v2 to notify the origin topic

* add parse group

* retry topic v2 compatibility

 * calculate consumer lag

 * delete retry topic
lizhimins pushed a commit to lizhimins/rocketmq that referenced this issue Nov 27, 2023
* Implement pop retry topic v2

* Use pop retry topic v2 to notify the origin topic

* add parse group

* retry topic v2 compatibility

 * calculate consumer lag

 * delete retry topic
@drpmma
Copy link
Contributor Author

drpmma commented Dec 13, 2023

Use "+" as the separator.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment