16
16
17
17
package org .springframework .kafka .listener ;
18
18
19
+ import java .util .Arrays ;
19
20
import java .util .Collections ;
20
21
import java .util .Map ;
21
22
import java .util .concurrent .CompletableFuture ;
49
50
* @param <V> the value type
50
51
*
51
52
* @author Soby Chacko
53
+ * @since 4.0
52
54
*/
53
55
public class ShareKafkaMessageListenerContainer <K , V >
54
56
extends AbstractShareKafkaMessageListenerContainer <K , V > {
55
57
58
+ private static final int POLL_TIMEOUT = 1000 ;
59
+
56
60
@ Nullable
57
61
private String clientId ;
58
62
@@ -166,11 +170,12 @@ private class ShareListenerConsumer implements Runnable {
166
170
this .consumer = ShareKafkaMessageListenerContainer .this .shareConsumerFactory .createShareConsumer (
167
171
ShareKafkaMessageListenerContainer .this .getGroupId (),
168
172
ShareKafkaMessageListenerContainer .this .getClientId ());
173
+
169
174
this .genericListener = listener ;
170
175
this .clientId = ShareKafkaMessageListenerContainer .this .getClientId ();
171
176
// Subscribe to topics, just like in the test
172
177
ContainerProperties containerProperties = getContainerProperties ();
173
- this .consumer .subscribe (java . util . Arrays .asList (containerProperties .getTopics ()));
178
+ this .consumer .subscribe (Arrays .asList (containerProperties .getTopics ()));
174
179
}
175
180
176
181
@ Nullable
@@ -184,7 +189,7 @@ public void run() {
184
189
Throwable exitThrowable = null ;
185
190
while (isRunning ()) {
186
191
try {
187
- var records = this .consumer .poll (java .time .Duration .ofMillis (1000 ));
192
+ var records = this .consumer .poll (java .time .Duration .ofMillis (POLL_TIMEOUT ));
188
193
if (records != null && records .count () > 0 ) {
189
194
for (var record : records ) {
190
195
@ SuppressWarnings ("unchecked" )
@@ -199,6 +204,7 @@ public void run() {
199
204
}
200
205
catch (Error e ) {
201
206
this .logger .error (e , "Stopping share consumer due to an Error" );
207
+ wrapUp ();
202
208
throw e ;
203
209
}
204
210
catch (Exception e ) {
@@ -213,15 +219,19 @@ public void run() {
213
219
if (exitThrowable != null ) {
214
220
this .logger .error (exitThrowable , "ShareListenerConsumer exiting due to error" );
215
221
}
216
- this .consumer .close ();
217
- this .logger .info (() -> this .consumerGroupId + ": Consumer stopped" );
222
+ wrapUp ();
218
223
}
219
224
220
225
protected void initialize () {
221
226
publishConsumerStartingEvent ();
222
227
publishConsumerStartedEvent ();
223
228
}
224
229
230
+ private void wrapUp (){
231
+ this .consumer .close ();
232
+ this .logger .info (() -> this .consumerGroupId + ": Consumer stopped" );
233
+ }
234
+
225
235
@ Override
226
236
public String toString () {
227
237
return "ShareKafkaMessageListenerContainer.ShareListenerConsumer ["
0 commit comments