@@ -305,8 +305,7 @@ public boolean isContainerPaused() {
305
305
306
306
@ Override
307
307
public boolean isPartitionPaused (TopicPartition topicPartition ) {
308
- return this .listenerConsumer != null && this .listenerConsumer
309
- .isPartitionPaused (topicPartition );
308
+ return this .listenerConsumer != null && this .listenerConsumer .isPartitionPaused (topicPartition );
310
309
}
311
310
312
311
@ Override
@@ -317,33 +316,28 @@ public boolean isInExpectedState() {
317
316
@ Override
318
317
public void enforceRebalance () {
319
318
this .thisOrParentContainer .enforceRebalanceRequested .set (true );
320
- KafkaMessageListenerContainer <K , V >.ListenerConsumer consumer = this .listenerConsumer ;
321
- if (consumer != null ) {
322
- consumer .wakeIfNecessary ();
323
- }
319
+ consumerWakeIfNecessary ();
324
320
}
325
321
326
322
@ Override
327
323
public void pause () {
328
324
super .pause ();
329
- KafkaMessageListenerContainer <K , V >.ListenerConsumer consumer = this .listenerConsumer ;
330
- if (consumer != null ) {
331
- consumer .wakeIfNecessary ();
332
- }
325
+ consumerWakeIfNecessary ();
333
326
}
334
327
335
328
@ Override
336
329
public void resume () {
337
330
super .resume ();
338
- KafkaMessageListenerContainer <K , V >.ListenerConsumer consumer = this .listenerConsumer ;
339
- if (consumer != null ) {
340
- consumer .wakeIfNecessary ();
341
- }
331
+ consumerWakeIfNecessary ();
342
332
}
343
333
344
334
@ Override
345
335
public void resumePartition (TopicPartition topicPartition ) {
346
336
super .resumePartition (topicPartition );
337
+ consumerWakeIfNecessary ();
338
+ }
339
+
340
+ private void consumerWakeIfNecessary () {
347
341
KafkaMessageListenerContainer <K , V >.ListenerConsumer consumer = this .listenerConsumer ;
348
342
if (consumer != null ) {
349
343
consumer .wakeIfNecessary ();
@@ -422,15 +416,11 @@ private void checkAckMode(ContainerProperties containerProperties) {
422
416
}
423
417
424
418
private ListenerType determineListenerType (GenericMessageListener <?> listener ) {
425
- ListenerType listenerType = ListenerUtils .determineListenerType (listener );
426
- if (listener instanceof DelegatingMessageListener ) {
427
- Object delegating = listener ;
428
- while (delegating instanceof DelegatingMessageListener <?> dml ) {
429
- delegating = dml .getDelegate ();
430
- }
431
- listenerType = ListenerUtils .determineListenerType (delegating );
419
+ Object delegating = listener ;
420
+ while (delegating instanceof DelegatingMessageListener <?> dml ) {
421
+ delegating = dml .getDelegate ();
432
422
}
433
- return listenerType ;
423
+ return ListenerUtils . determineListenerType ( delegating ) ;
434
424
}
435
425
436
426
@ Override
@@ -1586,7 +1576,7 @@ private void fixTxOffsetsIfNeeded() {
1586
1576
this .lastCommits .forEach ((tp , oamd ) -> {
1587
1577
long position = this .consumer .position (tp );
1588
1578
Long saved = this .savedPositions .get (tp );
1589
- if (saved != null && saved . longValue () != position ) {
1579
+ if (saved != null && saved != position ) {
1590
1580
this .logger .debug (() -> "Skipping TX offset correction - seek(s) have been performed; "
1591
1581
+ "saved: " + this .savedPositions + ", "
1592
1582
+ "committed: " + oamd + ", "
@@ -1609,9 +1599,7 @@ private void fixTxOffsetsIfNeeded() {
1609
1599
}
1610
1600
else {
1611
1601
this .transactionTemplate .executeWithoutResult (status -> {
1612
- doSendOffsets (((KafkaResourceHolder ) TransactionSynchronizationManager
1613
- .getResource (this .kafkaTxManager .getProducerFactory ()))
1614
- .getProducer (), toFix );
1602
+ doSendOffsets (getTxProducer (), toFix );
1615
1603
});
1616
1604
}
1617
1605
}
@@ -2195,9 +2183,7 @@ private void invokeBatchListenerInTx(final ConsumerRecords<K, V> records,
2195
2183
@ Override
2196
2184
public void doInTransactionWithoutResult (TransactionStatus s ) {
2197
2185
if (ListenerConsumer .this .kafkaTxManager != null ) {
2198
- ListenerConsumer .this .producer = ((KafkaResourceHolder ) TransactionSynchronizationManager
2199
- .getResource (ListenerConsumer .this .kafkaTxManager .getProducerFactory ()))
2200
- .getProducer (); // NOSONAR nullable
2186
+ ListenerConsumer .this .producer = getTxProducer ();
2201
2187
}
2202
2188
RuntimeException aborted = doInvokeBatchListener (records , recordList );
2203
2189
if (aborted != null ) {
@@ -2516,7 +2502,6 @@ private void invokeRecordListener(final ConsumerRecords<K, V> records) {
2516
2502
* Invoke the listener with each record in a separate transaction.
2517
2503
* @param records the records.
2518
2504
*/
2519
- @ SuppressWarnings (RAWTYPES ) // NOSONAR complexity
2520
2505
private void invokeRecordListenerInTx (final ConsumerRecords <K , V > records ) {
2521
2506
Iterator <ConsumerRecord <K , V >> iterator = records .iterator ();
2522
2507
while (iterator .hasNext ()) {
@@ -2561,9 +2546,7 @@ private void invokeInTransaction(Iterator<ConsumerRecord<K, V>> iterator, final
2561
2546
@ Override
2562
2547
public void doInTransactionWithoutResult (TransactionStatus s ) {
2563
2548
if (ListenerConsumer .this .kafkaTxManager != null ) {
2564
- ListenerConsumer .this .producer = ((KafkaResourceHolder ) TransactionSynchronizationManager
2565
- .getResource (ListenerConsumer .this .kafkaTxManager .getProducerFactory ()))
2566
- .getProducer (); // NOSONAR
2549
+ ListenerConsumer .this .producer = getTxProducer ();
2567
2550
}
2568
2551
RuntimeException aborted = doInvokeRecordListener (cRecord , iterator );
2569
2552
if (aborted != null ) {
@@ -2755,6 +2738,13 @@ private void pauseForNackSleep() {
2755
2738
this .nackSleepDurationMillis = -1 ;
2756
2739
}
2757
2740
2741
+ @ SuppressWarnings (RAWTYPES )
2742
+ private Producer <?, ?> getTxProducer () {
2743
+ return ((KafkaResourceHolder ) TransactionSynchronizationManager
2744
+ .getResource (ListenerConsumer .this .kafkaTxManager .getProducerFactory ()))
2745
+ .getProducer (); // NOSONAR
2746
+ }
2747
+
2758
2748
/**
2759
2749
* Actually invoke the listener.
2760
2750
* @param cRecord the record.
@@ -3884,20 +3874,13 @@ private Long computeBackwardWhereTo(long offset, boolean toCurrent, TopicPartiti
3884
3874
}
3885
3875
3886
3876
3887
- private static final class OffsetMetadata {
3888
-
3889
- final Long offset ; // NOSONAR
3890
-
3891
- final boolean relativeToCurrent ; // NOSONAR
3892
-
3893
- final SeekPosition seekPosition ; // NOSONAR
3894
-
3895
- OffsetMetadata (Long offset , boolean relativeToCurrent , SeekPosition seekPosition ) {
3896
- this .offset = offset ;
3897
- this .relativeToCurrent = relativeToCurrent ;
3898
- this .seekPosition = seekPosition ;
3899
- }
3900
-
3877
+ /**
3878
+ * Offset metadata record.
3879
+ * @param offset current offset.
3880
+ * @param relativeToCurrent relative to current.
3881
+ * @param seekPosition seek position strategy.
3882
+ */
3883
+ private record OffsetMetadata (Long offset , boolean relativeToCurrent , SeekPosition seekPosition ) {
3901
3884
}
3902
3885
3903
3886
private class StopCallback implements BiConsumer <Object , Throwable > {
0 commit comments