如何捕获通过mq->app->kafka->app->kafka的消息的处理时间

pxiryf3j  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(435)

我的系统管道是“ibm mq队列-->springboot应用程序(消息格式化程序)--->kafka主题-1(消息队列)-->springboot应用程序(消息转换器)--->-->kafka主题-2(消息队列)”。
我的要求是测试IBMMQ中生成并通过管道处理的消息的端到端处理时间。我有一个jmeter负载测试脚本和jms客户机,它生成通过管道传输的消息负载。dynatrace-kafka监控尚未实现,但这里使用了用于kafka监控的合流控制中心。
您能否建议一些可能的选项来衡量springboot应用程序(通过devops-jenkins管道部署的消息格式化程序和消息转换器应用程序)处理的消息的单个和端到端处理时间?

kknvjkwl

kknvjkwl1#

理论上,您可以使用来自jsr223测试元素的kafka客户机使用者代码从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));
        }
    }
}

这些值可以使用 vars 速记和打印到jmeter html报表 Jmeter 板作为自定义图表。

相关问题