@@ -50,6 +50,8 @@ public class KafkaConsumerInstrumentation extends AbstractKafkaInstrumentation {
5050 public static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.kafka.KafkaConsumerInterceptor" ;
5151 public static final String INTERCEPTOR_CLASS_KAFKA3_2 = "org.apache.skywalking.apm.plugin.kafka.Kafka3ConsumerInterceptor" ;
5252 public static final String ENHANCE_METHOD = "pollOnce" ;
53+ public static final String ENHANCE_METHOD_KAFKA3_7 = "poll" ;
54+ public static final String INTERCEPTOR_CLASS_KAFKA3_7 = "org.apache.skywalking.apm.plugin.kafka.Kafka3_7ConsumerInterceptor" ;
5355 public static final String ENHANCE_COMPATIBLE_METHOD = "pollForFetches" ;
5456 public static final String ENHANCE_CLASS = "org.apache.kafka.clients.consumer.KafkaConsumer" ;
5557 public static final String SUBSCRIBE_METHOD = "subscribe" ;
@@ -62,104 +64,121 @@ public class KafkaConsumerInstrumentation extends AbstractKafkaInstrumentation {
6264
6365 @ Override
6466 public ConstructorInterceptPoint [] getConstructorsInterceptPoints () {
65- return new ConstructorInterceptPoint [] {
66- new ConstructorInterceptPoint () {
67- @ Override
68- public ElementMatcher <MethodDescription > getConstructorMatcher () {
69- return takesArgumentWithType (0 , CONSTRUCTOR_INTERCEPT_TYPE );
70- }
67+ return new ConstructorInterceptPoint []{
68+ new ConstructorInterceptPoint () {
69+ @ Override
70+ public ElementMatcher <MethodDescription > getConstructorMatcher () {
71+ return takesArgumentWithType (0 , CONSTRUCTOR_INTERCEPT_TYPE );
72+ }
7173
72- @ Override
73- public String getConstructorInterceptor () {
74- return CONSUMER_CONFIG_CONSTRUCTOR_INTERCEPTOR_CLASS ;
75- }
76- },
77- new ConstructorInterceptPoint () {
78- @ Override
79- public ElementMatcher <MethodDescription > getConstructorMatcher () {
80- return takesArgumentWithType (0 , CONSTRUCTOR_INTERCEPT_MAP_TYPE );
81- }
82-
83- @ Override
84- public String getConstructorInterceptor () {
85- return MAP_CONSTRUCTOR_INTERCEPTOR_CLASS ;
86- }
87- },
74+ @ Override
75+ public String getConstructorInterceptor () {
76+ return CONSUMER_CONFIG_CONSTRUCTOR_INTERCEPTOR_CLASS ;
77+ }
78+ },
79+ new ConstructorInterceptPoint () {
80+ @ Override
81+ public ElementMatcher <MethodDescription > getConstructorMatcher () {
82+ return takesArgumentWithType (0 , CONSTRUCTOR_INTERCEPT_MAP_TYPE );
83+ }
84+
85+ @ Override
86+ public String getConstructorInterceptor () {
87+ return MAP_CONSTRUCTOR_INTERCEPTOR_CLASS ;
88+ }
89+ },
8890
8991 };
9092 }
9193
9294 @ Override
9395 public InstanceMethodsInterceptPoint [] getInstanceMethodsInterceptPoints () {
94- return new InstanceMethodsInterceptPoint [] {
95- new InstanceMethodsInterceptPoint () {
96- @ Override
97- public ElementMatcher <MethodDescription > getMethodsMatcher () {
98- // targeting Kafka Client < 3.2
99- return named (ENHANCE_METHOD ).or (named (ENHANCE_COMPATIBLE_METHOD ).and (returns (Map .class )));
100- }
96+ return new InstanceMethodsInterceptPoint []{
97+ new InstanceMethodsInterceptPoint () {
98+ @ Override
99+ public ElementMatcher <MethodDescription > getMethodsMatcher () {
100+ // targeting Kafka Client < 3.2
101+ return named (ENHANCE_METHOD ).or (named (ENHANCE_COMPATIBLE_METHOD ).and (returns (Map .class )));
102+ }
101103
102- @ Override
103- public String getMethodsInterceptor () {
104- return INTERCEPTOR_CLASS ;
105- }
104+ @ Override
105+ public String getMethodsInterceptor () {
106+ return INTERCEPTOR_CLASS ;
107+ }
106108
107- @ Override
108- public boolean isOverrideArgs () {
109- return false ;
110- }
111- },
112- new InstanceMethodsInterceptPoint () {
113- @ Override
114- public ElementMatcher <MethodDescription > getMethodsMatcher () {
115- // targeting Kafka Client >= 3.2
116- return named (ENHANCE_COMPATIBLE_METHOD ).and (returns (named ("org.apache.kafka.clients.consumer.internals.Fetch" )));
117- }
109+ @ Override
110+ public boolean isOverrideArgs () {
111+ return false ;
112+ }
113+ },
114+ new InstanceMethodsInterceptPoint () {
115+ @ Override
116+ public ElementMatcher <MethodDescription > getMethodsMatcher () {
117+ // targeting Kafka Client >= 3.2
118+ return named (ENHANCE_COMPATIBLE_METHOD ).and (returns (named ("org.apache.kafka.clients.consumer.internals.Fetch" )));
119+ }
118120
119- @ Override
120- public String getMethodsInterceptor () {
121- return INTERCEPTOR_CLASS_KAFKA3_2 ;
122- }
121+ @ Override
122+ public String getMethodsInterceptor () {
123+ return INTERCEPTOR_CLASS_KAFKA3_2 ;
124+ }
123125
124- @ Override
125- public boolean isOverrideArgs () {
126- return false ;
127- }
128- },
129- new InstanceMethodsInterceptPoint () {
130- @ Override
131- public ElementMatcher <MethodDescription > getMethodsMatcher () {
132- return named ( SUBSCRIBE_METHOD )
133- .and (takesArgumentWithType ( 0 , SUBSCRIBE_INTERCEPT_TYPE_NAME ));
134- }
126+ @ Override
127+ public boolean isOverrideArgs () {
128+ return false ;
129+ }
130+ },
131+ new InstanceMethodsInterceptPoint () {
132+ @ Override
133+ public ElementMatcher <MethodDescription > getMethodsMatcher () {
134+ // targeting Kafka Client >= 3.7
135+ return named ( ENHANCE_METHOD_KAFKA3_7 ) .and (returns ( named ( "org.apache.kafka.clients.consumer.ConsumerRecords" ) ));
136+ }
135137
136- @ Override
137- public String getMethodsInterceptor () {
138- return SUBSCRIBE_INTERCEPT_CLASS ;
139- }
138+ @ Override
139+ public String getMethodsInterceptor () {
140+ return INTERCEPTOR_CLASS_KAFKA3_7 ;
141+ }
140142
141- @ Override
142- public boolean isOverrideArgs () {
143- return false ;
144- }
145- },
146- new InstanceMethodsInterceptPoint () {
147- @ Override
148- public ElementMatcher <MethodDescription > getMethodsMatcher () {
149- return named (SUBSCRIBE_METHOD )
150- .and (takesArgumentWithType (0 , SUBSCRIBE_INTERCEPT_TYPE_PATTERN ));
151- }
143+ @ Override
144+ public boolean isOverrideArgs () {
145+ return false ;
146+ }
147+ },
148+ new InstanceMethodsInterceptPoint () {
149+ @ Override
150+ public ElementMatcher <MethodDescription > getMethodsMatcher () {
151+ return named (SUBSCRIBE_METHOD )
152+ .and (takesArgumentWithType (0 , SUBSCRIBE_INTERCEPT_TYPE_NAME ));
153+ }
152154
153- @ Override
154- public String getMethodsInterceptor () {
155- return SUBSCRIBE_INTERCEPT_CLASS ;
156- }
155+ @ Override
156+ public String getMethodsInterceptor () {
157+ return SUBSCRIBE_INTERCEPT_CLASS ;
158+ }
157159
158- @ Override
159- public boolean isOverrideArgs () {
160- return false ;
161- }
162- },
160+ @ Override
161+ public boolean isOverrideArgs () {
162+ return false ;
163+ }
164+ },
165+ new InstanceMethodsInterceptPoint () {
166+ @ Override
167+ public ElementMatcher <MethodDescription > getMethodsMatcher () {
168+ return named (SUBSCRIBE_METHOD )
169+ .and (takesArgumentWithType (0 , SUBSCRIBE_INTERCEPT_TYPE_PATTERN ));
170+ }
171+
172+ @ Override
173+ public String getMethodsInterceptor () {
174+ return SUBSCRIBE_INTERCEPT_CLASS ;
175+ }
176+
177+ @ Override
178+ public boolean isOverrideArgs () {
179+ return false ;
180+ }
181+ },
163182 new InstanceMethodsInterceptPoint () {
164183 @ Override
165184 public ElementMatcher <MethodDescription > getMethodsMatcher () {
0 commit comments