1. 문제 상황프로젝트에서 에러 로깅을 어떻게 할 지 고민하는 상황이었습니다. 제 프로젝트는 RestControllerAdvice를 통해 예외 처리를 하고 있습니다. @RestControllerAdvice("생략")public class AttendeeExceptionAdvice { @ExceptionHandler(ActivatedSessionExistsException.class) public ResponseEntity activatedSessionExistsHandler() { return RESPONSE_CONFLICT; } @ExceptionHandler(CourseNotFoundException.class) public ResponseEntity cours..
1. 들어가며 지금까지 RabbitMQ와 Kafka에 대해 자세히 알아봤습니다. 여러 메시지 큐가 있겠지만 그 둘만 다뤘던 이유는, 그 둘이 가장 널리 쓰이기도 하지만 여러 성능 테스트 결과 상반된 경향이 있었기 때문입니다. 오늘은 실제로 그 둘을 테스트 해보고 어떤 차이점이 있는지, 그리고 그 이유가 무엇인지 살펴보도록 하겠습니다.각각 결과를 살펴보면 각 Message Queue가 어디에 적합할 지 결론에 다다를 수 있을 것이라 생각합니다 :) 2. RabbitMQ vs Kafka 오늘 글은 다음 논문, 글들을 참조하여 쓰여졌습니다! 그래프는 모두 R로 작성되었습니다. Dobbelaere, Philippe & Sheykh Esmaili, Kyumars. (2017). Kafka versus Rabbit..
1. 들어가며 Message Queue 하면 가장 먼저 떠오르는 두 개는 Kafka와 RabbitMQ 아닌가 합니다.그래서 오늘은 Kafka에 이어 RabbitMQ에 대해 정리해보고자 합니다.똑같은 메시지 큐가 뭐가 다른가 싶겠지만 둘은 구현된 방식에 큰 차이가 있습니다. 또한 그 구현 방식에 따라 특화된 분야도 매우 다릅니다. 둘의 차이점은 다음 글으로 남겨두고 오늘은 RabbitMQ가 어떤 아키텍처로 구성 되어있는지 살펴보도록 하겠습니다. 2. RabbitMQ 아키텍처RabbitMQ란?메시지 생성자와 소비자 사이에서 메시지를 중계해주는 '메시지 브로커'입니다. 비동기 메시지를 사용하는 프로그램들 사이에서 데이터를 송수신하며 교환소(Exchange)와 Queue의 구조로 이루어져 있습니다. - Rab..
1. 들어가며 오늘은 Kafka의 클라이언트인 Producer와 Client가 브로커 노드와 통신하기 위해 사용하는 NetworkClient에 대해 알아보도록 하겠습니다. NetworkClient란?Kafka 클라이언트와 브로커 노드들의 연결 상태를 관리하고 브로커 노드로 데이터를 쓰거나 브로커 노드에서 데이터를 읽는 역할을 한다. 클라이언트가 브로커에 보낼 ClientRequest를 만들면, NetworkClient가 중간에서 요청을 중개해줍니다. 그림을 보면 알 수 있듯이 NetworkClient는 Client 측에 있는 구현체입니다. 오늘은 이 구현체가 어떻게 I/O Multiplexing을 통해 빠른 동시 연결을 달성하는지 알아보도록 하겠습니다. 오늘 글은 다음 글과 함께 내부 코드를 보며 ..
1. 개요 이번엔 Kafka의 큰 세가지 축(Producer - Broker - Consumer) 중 하나인 Consumer에 대해서 알아보고자 합니다.Producer에 대해서 아직 안 읽어보셨다면 다음 글을 먼저 읽어보시는 걸 추천드립니다.https://rawshrimpsushi.tistory.com/46 Kafka - Producer1. 개요 앞서 살펴본 것처럼 Kafka는 여타 Message Queue처럼 Producer - Consumer 구조를 가지고 있으나 세부적인 디테일은 크게 다릅니다. 오늘은 그 중 Producer를 좀 더 심층적으로 알아보고자 합니다. 앞rawshrimpsushi.tistory.com 오늘 글은 다음 글을 기반으로 소스 코드, 다양한 자료를 보며 작성되었습니다!https..
1. 개요 앞서 살펴본 것처럼 Kafka는 여타 Message Queue처럼 Producer - Consumer 구조를 가지고 있으나 세부적인 디테일은 크게 다릅니다. 오늘은 그 중 Producer를 좀 더 심층적으로 알아보고자 합니다. 앞으로 RabbitMQ와의 비교까지 갈 길이 머니 얼른 정리해보겠습니다! 오늘 글은 다음 글을 기반으로 소스 코드를 보며 작성된 글입니다!https://d2.naver.com/helloworld/6560422 2. Kafka Producer란? Kafka는 Producer의 데이터 전송을 위해서 Producer API를 제공합니다. Producer는 브로커에 특정 Topic(partition까지도 가능)을 지정하여 메시지를 전달합니다. 오늘은 Producer에서 유저에..