2024. 11. 16. 00:36ㆍKafka
Project Reactor란
Project Reactor란 Java 환경에서 비동기 application을 만들기 위한 reactive library입니다. Reactor는 java에서 비동기를 위해 제공하는 Flux와 Mono를 활용하고 있습니다. 이를 통해 메모리를 효율적으로 사용하고 불필요한 buffering이나 blocking을 방지합니다.
Reactor Kafka
Reactor Kafka는 앞서 설명한 Project Reactor를 활용한 Kafka의 reactive library입니다. Project Reactor를 활용해서 Kafka의 메시지 송수신을 비동기로 처리할 수 있게 합니다.
Reactor Kafka 특징
Kafka를 위한 Functional Interface
Reactor Kafka는 Java 환경에서 동작합니다. Java 환경에서 Functional Interface를 활용한 람다 표현식 등을 조금 더 적극적으로 활용할 수 있게 합니다.
비동기 Back-pressure
Reactor Kafka는 Project Ractor에서 제공되는 비동기 Back-pressure를 활용할 수 있습니다. 이를 통해 Kafka로 과도하게 publishing되는 것을 제어할 수 있습니다.
Reactor Kafka 주의 사항
Reactor Kafka는 reactive stream을 기반으로 하는 비동기 환경에서 사용되도록 설계되어 있습니다. 그렇기 때문에 Reactor Kafka를 사용하는 곳에 blocking 구조로 동작하는 로직이 있다면 효율이 많이 떨어질 수 있습니다. reactive stream은 기본적으로 단일 스레드에서 실행되는데 blocking로직으로 인해 스레드 지연되는 부분이 발생한다면 스레드 내의 EventLoop이 관리하는 모든 이벤트 처리가 같이 지연되기 때문입니다.