@@ -162,17 +162,15 @@ public GetMessageResult recodeRetryMessage(GetMessageResult getMessageResult,
162
162
return result ;
163
163
}
164
164
165
- public PopConsumerContext addGetMessageResult (PopConsumerContext context , GetMessageResult result ,
165
+ public PopConsumerContext handleGetMessageResult (PopConsumerContext context , GetMessageResult result ,
166
166
String topicId , int queueId , PopConsumerRecord .RetryType retryType , long offset ) {
167
167
168
- if (result .getStatus () == GetMessageStatus . FOUND && !result .getMessageQueueOffset ().isEmpty ()) {
168
+ if (GetMessageStatus . FOUND . equals ( result .getStatus ()) && !result .getMessageQueueOffset ().isEmpty ()) {
169
169
if (context .isFifo ()) {
170
170
this .setFifoBlocked (context , context .getGroupId (), topicId , queueId , result .getMessageQueueOffset ());
171
171
}
172
-
173
- // build request header here
172
+ // build response header here
174
173
context .addGetMessageResult (result , topicId , queueId , retryType , offset );
175
-
176
174
if (brokerConfig .isPopConsumerKVServiceLog ()) {
177
175
log .info ("PopConsumerService pop, time={}, invisible={}, " +
178
176
"groupId={}, topic={}, queueId={}, offset={}, attemptId={}" ,
@@ -181,20 +179,23 @@ public PopConsumerContext addGetMessageResult(PopConsumerContext context, GetMes
181
179
}
182
180
}
183
181
184
- if (!context .isFifo () && result .getNextBeginOffset () > OFFSET_NOT_EXIST ) {
182
+ long commitOffset = offset ;
183
+ if (context .isFifo ()) {
184
+ if (!GetMessageStatus .FOUND .equals (result .getStatus ())) {
185
+ commitOffset = result .getNextBeginOffset ();
186
+ }
187
+ } else {
185
188
this .brokerController .getConsumerOffsetManager ().commitPullOffset (
186
189
context .getClientHost (), context .getGroupId (), topicId , queueId , result .getNextBeginOffset ());
187
- long commitOffset = result .getStatus () == GetMessageStatus .FOUND ? offset : result .getNextBeginOffset ();
188
190
if (brokerConfig .isEnablePopBufferMerge () && popConsumerCache != null ) {
189
191
long minOffset = popConsumerCache .getMinOffsetInCache (context .getGroupId (), topicId , queueId );
190
192
if (minOffset != OFFSET_NOT_EXIST ) {
191
193
commitOffset = minOffset ;
192
194
}
193
195
}
194
- this .brokerController .getConsumerOffsetManager ().commitOffset (
195
- context .getClientHost (), context .getGroupId (), topicId , queueId , commitOffset );
196
196
}
197
-
197
+ this .brokerController .getConsumerOffsetManager ().commitOffset (
198
+ context .getClientHost (), context .getGroupId (), topicId , queueId , commitOffset );
198
199
return context ;
199
200
}
200
201
@@ -310,7 +311,7 @@ protected CompletableFuture<PopConsumerContext> getMessageAsync(CompletableFutur
310
311
} else {
311
312
final long consumeOffset = this .getPopOffset (groupId , topicId , queueId , result .getInitMode ());
312
313
return getMessageAsync (clientHost , groupId , topicId , queueId , consumeOffset , remain , filter )
313
- .thenApply (getMessageResult -> addGetMessageResult (
314
+ .thenApply (getMessageResult -> handleGetMessageResult (
314
315
result , getMessageResult , topicId , queueId , retryType , consumeOffset ));
315
316
}
316
317
});
0 commit comments