Skip to content

Commit d750461

Browse files
authored
[ISSUE #9857] Optimize the performance of the notification by removing unnecessary retry checks (#9858)
Change-Id: Iddb8841defd4a33e65080c2451df466d045e4a23
1 parent 9c3e7fe commit d750461

1 file changed

Lines changed: 9 additions & 20 deletions

File tree

broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -135,34 +135,23 @@ public RemotingCommand processRequest(final ChannelHandlerContext ctx,
135135
}
136136
int randomQ = random.nextInt(100);
137137
boolean hasMsg = false;
138-
boolean needRetry = randomQ % 5 == 0;
139138
BrokerConfig brokerConfig = brokerController.getBrokerConfig();
140-
if (needRetry) {
139+
if (requestHeader.getQueueId() < 0) {
140+
// read all queue
141+
hasMsg = hasMsgFromTopic(topicConfig, randomQ, requestHeader);
142+
} else {
143+
int queueId = requestHeader.getQueueId();
144+
hasMsg = hasMsgFromQueue(topicConfig.getTopicName(), requestHeader, queueId);
145+
}
146+
// if it doesn't have message, fetch retry
147+
if (!hasMsg) {
141148
String retryTopic = KeyBuilder.buildPopRetryTopic(requestHeader.getTopic(), requestHeader.getConsumerGroup(), brokerConfig.isEnableRetryTopicV2());
142149
hasMsg = hasMsgFromTopic(retryTopic, randomQ, requestHeader);
143150
if (!hasMsg && brokerConfig.isEnableRetryTopicV2() && brokerConfig.isRetrieveMessageFromPopRetryTopicV1()) {
144151
String retryTopicConfigV1 = KeyBuilder.buildPopRetryTopicV1(requestHeader.getTopic(), requestHeader.getConsumerGroup());
145152
hasMsg = hasMsgFromTopic(retryTopicConfigV1, randomQ, requestHeader);
146153
}
147154
}
148-
if (!hasMsg) {
149-
if (requestHeader.getQueueId() < 0) {
150-
// read all queue
151-
hasMsg = hasMsgFromTopic(topicConfig, randomQ, requestHeader);
152-
} else {
153-
int queueId = requestHeader.getQueueId();
154-
hasMsg = hasMsgFromQueue(topicConfig.getTopicName(), requestHeader, queueId);
155-
}
156-
// if it doesn't have message, fetch retry again
157-
if (!needRetry && !hasMsg) {
158-
String retryTopic = KeyBuilder.buildPopRetryTopic(requestHeader.getTopic(), requestHeader.getConsumerGroup(), brokerConfig.isEnableRetryTopicV2());
159-
hasMsg = hasMsgFromTopic(retryTopic, randomQ, requestHeader);
160-
if (!hasMsg && brokerConfig.isEnableRetryTopicV2() && brokerConfig.isRetrieveMessageFromPopRetryTopicV1()) {
161-
String retryTopicConfigV1 = KeyBuilder.buildPopRetryTopicV1(requestHeader.getTopic(), requestHeader.getConsumerGroup());
162-
hasMsg = hasMsgFromTopic(retryTopicConfigV1, randomQ, requestHeader);
163-
}
164-
}
165-
}
166155

167156
if (!hasMsg) {
168157
PollingResult pollingResult = popLongPollingService.polling(ctx, request, new PollingHeader(requestHeader));

0 commit comments

Comments
 (0)