You can configure the AppDynamics Java Agent to detect entry points for Apache Kafka consumer activity using
KafkaConsumer.poll() (introduced in Kafka v0.10) and
Kafka SimpleConsumer.fetch() (introduced in Kafka v0.9). Prior to version 0.11, the Kafka payload did not include a location to store correlation data, so end-to-end Business Transaction correlation is only possible with the Kafka client and broker versions 0.11 or greater.
To instrument Kafka consumer entry points using
KafkaConsumer.poll(), identify the method in which the consumer reads messages in a loop with a custom interceptor definition. We instrument the iterator's next method to start and end the Business Transaction for each message. There could be many iterators used for iterating messages but we only support iterators of the following types:
Identify the class and method of the loop that processes messages from Kafka. Consider, for example, a class
MyConsumerthat employs the following loop to poll and process messages from Kafka:
For this case, you want to intercept:
The interceptor can also be applied to a method that processes individual records, not just a loop. For example:
- Use your preferred text editor to create and edit a file named custom-interceptors.xml at the following path:
Copy the following XML to
Set the value of the class name to the name of your consumer class. For instance, to specify the
Set the value of the method name to the name of your message processing loop method. For instance, to specify the
After the Java Agent reads the updated configuration, it detects consumer activity and upstream Kafka queue. The application flow map shows the tier receiving data from the Kafka queue.
Kafka SimpleConsumer Entry Points
To enable consumer entry points for Kafka clients that retrieve messages using
SimpleConsumer.fetch(), register the
enable-kafka-consumer node property with a value of "true."
Kafka consumer activity shows up as an exit call in this case.