Trebuie să interceptăm toate solicitările din Kafka și să le trimitem în sistemul de audit sau telemetrie. Cum ai face asta?
Răspuns de la AI
sobes.tech AI
Для перехвата всех запросов в Kafka и отправки их в систему аудита или телеметрии можно использовать несколько подходов:
- Использование Kafka Interceptor API — Kafka предоставляет интерфейсы ProducerInterceptor и ConsumerInterceptor, которые позволяют перехватывать сообщения при отправке и приёме. В этих перехватчиках можно реализовать логику отправки данных в систему аудита.
public class AuditProducerInterceptor implements ProducerInterceptor<String, String> {
@Override
public ProducerRecord<String, String> onSend(ProducerRecord<String, String> record) {
// Отправляем данные в систему аудита
auditService.send(record);
return record;
}
@Override
public void onAcknowledgement(RecordMetadata metadata, Exception exception) {}
@Override
public void close() {}
@Override
public void configure(Map<String, ?> configs) {}
}
-
Прокси-сервис — создать промежуточный сервис, который принимает сообщения от продюсеров, отправляет их в Kafka и одновременно дублирует в систему аудита.
-
Использование Kafka Connect с Sink Connector — настроить коннектор, который будет читать из топика и отправлять данные в систему аудита.
-
Обработка на стороне потребителей — если аудит важен для потребления, можно добавить логику отправки в аудит в коде консьюмера.
Наиболее прозрачным и масштабируемым вариантом для Java-приложений является использование ProducerInterceptor и ConsumerInterceptor, так как они встроены в Kafka-клиент и не требуют изменения архитектуры.