как фиксировать время обработки сообщений, проходящих через MQ -> Приложение -> Kafka -> Приложение -> Kafka

У меня есть системный конвейер как "Очередь IBM MQ -> Приложение Springboot (форматирование сообщений) -> Тема Kafka-1 (очередь сообщений) -> Приложение Springboot (преобразователь сообщений) -> -> Тема Kafka-2 (сообщение очередь)".

Мое требование - проверить время непрерывной обработки сообщений, созданных в IBM MQ и обработанных по конвейеру. У меня есть тестовый сценарий JMeter Load с JMS-клиентом, который генерирует множество сообщений, перекачиваемых через конвейер. Мониторинг Dynatrace Kafka еще не реализован, но здесь используется Confluent Control Center для мониторинга Kafka.

Не могли бы вы предложить возможные варианты измерения индивидуального и сквозного времени обработки сообщений, обрабатываемых приложениями Springboot (приложения Message Formatter и Message Transformer, развертываемые через конвейер DevOps Jenkins)?

1 ответ

Решение

Теоретически вы можете получить количество ожидающих сообщений в теме Kafka из самого JMeter, используя код клиента Kafka Client Consumer из JSR223 Test Elements.

Пример кода:

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 Reporting Dashboard в виде настраиваемых диаграмм.

Другие вопросы по тегам