본문 바로가기

분류 전체보기141

1. Reactive - 함수형 인터페이스 / 블로킹 & 논블로킹 함수형 인터페이스는 1개의 추상 메소드를 가지고 있는 인터페이스이다. (Function, Consumer, Supplier, Runnable) 함수형 인터페이스는 1급 객체로 사용할 수 있어 1) 함수형 인터페이스에 변수를 할당 2) 함수형 인터페이스로 인자를 전달 3) 함수형 인터페이스를 반환값으로 사용 4) 함수형 인터페이스를 구현한 익명 클래스를 람다식으로 변경할 수 있다. 이 함수형 인터페이스는 호출한 Thread에서 실행된다. 이는 Bloking과 Nonbloking과 관련이 있다. 함수 호출의 관점에서 A -> B를 call 할 때, A -> B에서 B의 응답과정이 동기와 비동기로 나뉘는 요점이 된다. 즉 A -> B call 시에 A는 B가 어떤 결과를 반환하기까지 기다려야 하는 상황이면 블.. 2024. 4. 4.
7. Kafka Producer 메시지 전송과 재전송 옵션 max.block.ms send() 호출 시 Record Accumulator가 꽉 차서 입력되지 못하여 block 되는 최대 시간. 초과되면 Timeout Exception이 발생. linger.ms Record Accumulator에서 Sender Thread로 보내는 대기 시간. 즉 Producer가 메시지를 보낸 후 지정된 시간 동안 대기하여 모아서 처리하게 됨. request.timeout.ms Sender Thread에서 Broker로 메시지를 송신한 후 응답을 기다리는 시간.응답이 오지 않는 경우 재전송을 하거나 Timeout Exception 발생. retry.backoff.ms 재전송 시도를 하기 위한 대기 시간 delivery.timeout.ms 전송과 재전송을 하는 과정에서 허용된 최.. 2024. 4. 4.
6. Kafka - Java Kafka Clients의 Send 메소드 카프카 클라이언트를 개발할 때 보통 자바를 쓴다. Producer Client의 별도 Thread 가 전송을 담당한다는 점에서 기본적으로 Thread간의 비동기 전송이다. 즉 Main Thread가 있고, Serializer를 통해 전송하려는 데이터를 일련의 바이트로 변환한다. 즉 객체나 데이터를 바이트스트림으로 변환하여 Partitioner를 거쳐 이전에 학습했던 대로 파티션 별로 별도의 배치에 따라 담겨진 후 Sender에게 보내지는데, Sender는 메인 쓰레드가 아닌 별도의 Send Network Thread가 전송하게 된다. 1 2 3 4 5 6 Main Thread Send Network Thread DATA.send() Serializer Partitioner Topic Partition#1.. 2024. 4. 4.
5. Kafka - Kafka-Configs Kafka의 환경설정은 다양하게 할 수 있다. Kafka Producer의 설정은 Java Application 형태로 개발하였으면 Property의 항목에 입력하는 K:V 형태로 입력할 수 있고, Broker나 Topic에 관련한 환경설정은 docker run 시에 입력한다던지, docker-compose.yml 파일 안에서 입력한다던지 등 다양하게 입력할 수 있다. 물론 bitnami-kafka, confluent-kafka, apache-kafka 등 패키징 된 kafka를 제공하는 곳들이라면 환경설정을 매핑해주는 자체적인 환경설정 Key들이 있을 수 있다. 여기서는 confluent-kafka의 kafka-configs를 사용한다. configs 설정 확인 docker exec -it kafka .. 2024. 4. 4.