@@ -76,10 +76,7 @@ void ConsumerImplBase::doBatchReceiveTimeTask() {
7676 long diff =
7777 batchReceivePolicy_.getTimeoutMs () - (TimeUtils::currentTimeMillis () - batchReceive.createAt_ );
7878 if (diff <= 0 ) {
79- Lock batchOptionLock (batchReceiveOptionMutex_);
80- notifyBatchPendingReceivedCallback (batchReceive.batchReceiveCallback_ );
81- batchOptionLock.unlock ();
82- batchPendingReceives_.pop ();
79+ notifyBatchPendingReceivedCallback (popBatchReceiveCallback ());
8380 } else {
8481 hasPendingReceives = true ;
8582 timeToWaitMs = diff;
@@ -96,20 +93,17 @@ void ConsumerImplBase::doBatchReceiveTimeTask() {
9693void ConsumerImplBase::failPendingBatchReceiveCallback () {
9794 Lock lock (batchPendingReceiveMutex_);
9895 while (!batchPendingReceives_.empty ()) {
99- OpBatchReceive opBatchReceive = batchPendingReceives_.front ();
100- batchPendingReceives_.pop ();
101- listenerExecutor_->postWork (
102- [opBatchReceive]() { opBatchReceive.batchReceiveCallback_ (ResultAlreadyClosed, {}); });
96+ auto callback = popBatchReceiveCallback ();
97+ listenerExecutor_->postWork ([callback]() { callback (ResultAlreadyClosed, {}); });
10398 }
10499}
105100
106101void ConsumerImplBase::notifyBatchPendingReceivedCallback () {
107102 Lock lock (batchPendingReceiveMutex_);
108103 if (!batchPendingReceives_.empty ()) {
109- OpBatchReceive& batchReceive = batchPendingReceives_.front ();
110- batchPendingReceives_.pop ();
104+ auto callback = popBatchReceiveCallback ();
111105 lock.unlock ();
112- notifyBatchPendingReceivedCallback (batchReceive. batchReceiveCallback_ );
106+ notifyBatchPendingReceivedCallback (callback );
113107 }
114108}
115109
0 commit comments