如何捕获流经 MQ -> App -> Kafka -> App -> Kafka 的消息的处理时间
how to capture processing times of messages flowing thru MQ -> App -> Kafka -> App -> Kafka
我有系统管道 "IBM MQ queue --> Springboot app (Message Formatter) --> Kafka topic-1 (message queue) --> Springboot app (Message Transformer) --> --> Kafka topic-2 (message queue)"。
我的要求是测试在 IBM MQ 中生成并通过管道处理的消息的端到端处理时间。我有一个带有 JMS 客户端的 JMeter 负载测试脚本,它生成通过管道泵送的消息负载。 Dynatrace Kafka 监控尚未实现,但这里使用 Confluent Control Center for Kafka 监控。
您能否建议一些可能的选项来衡量 Springboot 应用程序(通过 DevOps Jenkins 管道部署的 Message Formatter 和 Message Transformer 应用程序)处理消息的单个和端到端处理时间?
理论上,您可以使用 Kafka Client Consumer code from JSR223 Test Elements
从 JMeter 本身获取 Kafka 主题中待处理消息的数量
示例代码:
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("test"));
while(true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
// after each message, query the number of messages of the topic
Set<TopicPartition> partitions = consumer.assignment();
Map<TopicPartition, Long> offsets = consumer.endOffsets(partitions);
for(TopicPartition partition : offsets.keySet()) {
System.out.printf("partition %s is at %d\n", partition.topic(), offsets.get(partition));
}
}
}
这些值可以作为自定义图表存储到 Sample Variables using vars
shorthand and plotted into JMeter HTML Reporting Dashboard 中。
我有系统管道 "IBM MQ queue --> Springboot app (Message Formatter) --> Kafka topic-1 (message queue) --> Springboot app (Message Transformer) --> --> Kafka topic-2 (message queue)"。
我的要求是测试在 IBM MQ 中生成并通过管道处理的消息的端到端处理时间。我有一个带有 JMS 客户端的 JMeter 负载测试脚本,它生成通过管道泵送的消息负载。 Dynatrace Kafka 监控尚未实现,但这里使用 Confluent Control Center for Kafka 监控。
您能否建议一些可能的选项来衡量 Springboot 应用程序(通过 DevOps Jenkins 管道部署的 Message Formatter 和 Message Transformer 应用程序)处理消息的单个和端到端处理时间?
理论上,您可以使用 Kafka Client Consumer code from JSR223 Test Elements
从 JMeter 本身获取 Kafka 主题中待处理消息的数量示例代码:
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("test"));
while(true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
// after each message, query the number of messages of the topic
Set<TopicPartition> partitions = consumer.assignment();
Map<TopicPartition, Long> offsets = consumer.endOffsets(partitions);
for(TopicPartition partition : offsets.keySet()) {
System.out.printf("partition %s is at %d\n", partition.topic(), offsets.get(partition));
}
}
}
这些值可以作为自定义图表存储到 Sample Variables using vars
shorthand and plotted into JMeter HTML Reporting Dashboard 中。