20
20
import org .apache .kafka .clients .consumer .ConsumerRecord ;
21
21
import org .apache .kafka .clients .consumer .ConsumerRecords ;
22
22
import org .apache .kafka .clients .consumer .KafkaShareConsumer ;
23
+ import org .apache .kafka .clients .consumer .ShareConsumer ;
23
24
import org .apache .kafka .common .KafkaException ;
24
25
import org .apache .kafka .common .Metric ;
25
26
import org .apache .kafka .common .MetricName ;
47
48
import java .util .concurrent .Executors ;
48
49
import java .util .concurrent .Future ;
49
50
import java .util .concurrent .TimeUnit ;
50
- import java .util .concurrent .TimeoutException ;
51
51
import java .util .concurrent .atomic .AtomicLong ;
52
+ import java .util .function .Function ;
52
53
53
54
import joptsimple .OptionException ;
54
55
import joptsimple .OptionSpec ;
@@ -59,6 +60,10 @@ public class ShareConsumerPerformance {
59
60
private static final Logger LOG = LoggerFactory .getLogger (ShareConsumerPerformance .class );
60
61
61
62
public static void main (String [] args ) {
63
+ run (args , KafkaShareConsumer ::new );
64
+ }
65
+
66
+ static void run (String [] args , Function <Properties , ShareConsumer <byte [], byte []>> shareConsumerCreator ) {
62
67
try {
63
68
LOG .info ("Starting share consumer/consumers..." );
64
69
ShareConsumerPerfOptions options = new ShareConsumerPerfOptions (args );
@@ -68,9 +73,9 @@ public static void main(String[] args) {
68
73
if (!options .hideHeader ())
69
74
printHeader ();
70
75
71
- List <KafkaShareConsumer <byte [], byte []>> shareConsumers = new ArrayList <>();
76
+ List <ShareConsumer <byte [], byte []>> shareConsumers = new ArrayList <>();
72
77
for (int i = 0 ; i < options .threads (); i ++) {
73
- shareConsumers .add (new KafkaShareConsumer <> (options .props ()));
78
+ shareConsumers .add (shareConsumerCreator . apply (options .props ()));
74
79
}
75
80
long startMs = System .currentTimeMillis ();
76
81
consume (shareConsumers , options , totalMessagesRead , totalBytesRead , startMs );
@@ -83,7 +88,6 @@ public static void main(String[] args) {
83
88
shareConsumers .forEach (shareConsumer -> {
84
89
@ SuppressWarnings ("UnusedLocalVariable" )
85
90
Map <TopicIdPartition , Optional <KafkaException >> ignored = shareConsumer .commitSync ();
86
- shareConsumer .close (Duration .ofMillis (500 ));
87
91
});
88
92
89
93
// Print final stats for share group.
@@ -94,6 +98,7 @@ public static void main(String[] args) {
94
98
95
99
shareConsumersMetrics .forEach (ToolsUtils ::printMetrics );
96
100
101
+ shareConsumers .forEach (shareConsumer -> shareConsumer .close (Duration .ofMillis (500 )));
97
102
} catch (Throwable e ) {
98
103
System .err .println (e .getMessage ());
99
104
System .err .println (Utils .stackTrace (e ));
@@ -106,11 +111,11 @@ protected static void printHeader() {
106
111
System .out .printf ("start.time, end.time, data.consumed.in.MB, MB.sec, nMsg.sec, data.consumed.in.nMsg%s%n" , newFieldsInHeader );
107
112
}
108
113
109
- private static void consume (List <KafkaShareConsumer <byte [], byte []>> shareConsumers ,
114
+ private static void consume (List <ShareConsumer <byte [], byte []>> shareConsumers ,
110
115
ShareConsumerPerfOptions options ,
111
116
AtomicLong totalMessagesRead ,
112
117
AtomicLong totalBytesRead ,
113
- long startMs ) throws ExecutionException , InterruptedException , TimeoutException {
118
+ long startMs ) throws ExecutionException , InterruptedException {
114
119
long numMessages = options .numMessages ();
115
120
long recordFetchTimeoutMs = options .recordFetchTimeoutMs ();
116
121
shareConsumers .forEach (shareConsumer -> shareConsumer .subscribe (options .topic ()));
@@ -180,7 +185,7 @@ private static void consume(List<KafkaShareConsumer<byte[], byte[]>> shareConsum
180
185
totalBytesRead .set (bytesRead .get ());
181
186
}
182
187
183
- private static void consumeMessagesForSingleShareConsumer (KafkaShareConsumer <byte [], byte []> shareConsumer ,
188
+ private static void consumeMessagesForSingleShareConsumer (ShareConsumer <byte [], byte []> shareConsumer ,
184
189
AtomicLong totalMessagesRead ,
185
190
AtomicLong totalBytesRead ,
186
191
ShareConsumerPerfOptions options ,
0 commit comments