Ответ
Я обладаю практическими знаниями Apache Kafka на уровне тестирования и интеграции.
Что я умею и понимаю:
- Основные концепции: Роль producer, consumer, topic, partition, offset, consumer group и брокеров.
- Тестирование компонентов: Написание и выполнение тестов для производителей (producers) и потребителей (consumers), проверка корректности отправки и получения сообщений.
- Проверка отказоустойчивости: Тестирование поведения системы при отключении брокера, перераспределении партиций, повторной обработке сообщений.
- Работа с форматами: Опыт работы с сообщениями в форматах JSON, Avro (с использованием Schema Registry).
- Интеграционное тестирование: Использование Kafka как шины событий в тестовых сценариях микросервисной архитектуры.
- Базовое администрирование: Умение поднять локальный кластер (например, с помощью Docker), создать топик, изменить его конфигурацию.
Пример интеграционного теста для Consumer на Java:
@Test
public void testKafkaConsumerReceivesMessage() {
String topicName = "order-events";
String testOrderId = "order-123";
String testEventPayload = "{"status": "CREATED"}";
// 1. Отправка тестового сообщения в топик
ProducerRecord<String, String> record =
new ProducerRecord<>(topicName, testOrderId, testEventPayload);
kafkaTemplate.send(record).get(); // Используем KafkaTemplate или Producer
// 2. Ожидание и проверка, что consumer получил сообщение
ConsumerRecord<String, String> receivedRecord =
kafkaConsumer.poll(Duration.ofSeconds(10)).iterator().next();
assertEquals(testOrderId, receivedRecord.key());
assertEquals(testEventPayload, receivedRecord.value());
assertEquals(topicName, receivedRecord.topic());
}
Готов обсуждать тестовые стратегии для систем, построенных на основе событийной архитектуры с использованием Kafka.