분류 전체보기 557

[Spring for Apache Kafka] 3-3. Receiving Messages: Post-Processing

1. Forwarding Listener Results using @SendTo@KafkaListener에 @SendTo 애너테이션을 함께 사용하면, 리스너 메소드의 반환값을 지정된 토픽으로 자동 전달함 토픽 지정유형설명예시고정된 토픽애플리케이션 초기화 시 지정된 토픽에 메시지 전달@SendTo("someTopic")애플리케이션 초기화 시 결정되는 SpEL애플리케이션 초기화 시 평가되어 결정됨@SendTo("#{someExpression}")실행 시 결정되는 SpEL동적으로 토픽을 결정 (request, source, result 등 사용 가능)@SendTo("!{request.value()}")빈 토픽 이름!{source.headers['kafka_replyTopic']}로 간주@SendTo() 설정더..

[Spring for Apache Kafka] 3-2. Receiving Messages: @KafkaListener

1. @KafkaListener AnnotationBean 메서드를 Kafka 리스너로 지정할 때 사용Listener Container 안에서 실행되며, 내부적으로 MessagingMessageListenerAdapter로 감싸집니다메서드 파라미터에 맞게 Converter 등을 설정해줌대부분의 속성들은 SpEL(#{...}) 또는 **프로퍼티 플레이스홀더(${...})**를 이용해 동적으로 지정할 수 있음 Record Listeners@KafkaListener를 붙이면 적용됨Listener Container Factory 필요 (이름이 kafkaListenerContainerFactory인 빈을 찾음) 예제더보기public class Listener { @KafkaListener(id = "foo"..

[Spring for Apache Kafka] 4. Application Events

1. 이벤트Spring Kafka는 여러 소비자 관련 이벤트를 발행함카테고리이벤트명설명주요 속성소비자 생애주기ConsumerStartingEvent소비자 스레드가 생성될 때 발생(poll 시작 전)container, sourceConsumerStartedEvent소비자가 실제로 폴링을 시작하려고 할 때 발생container, sourceConsumerFailedToStartEvent소비자가 시작되지 못한 경우 발생(consumerStartTimeout 초과)container, sourceConsumerStoppingEvent소비자가 정지 직전에 발생container, partitionsConsumerStoppedEvent소비자가 정지된 후 발생container, source, reasonConsumerR..

[Spring for Apache Kafka] 3-1. Receiving Messages: Message Listener

이 문서는 해당 섹션의 일부분만 정리되었음. 1. Message ListenersKafka에서 메시지를 처리하려면 리스너를 제공해야 함인터페이스설명MessageListener개별 메시지 처리AcknowledgingMessageListener메시지 처리 후 수동으로 오프셋을 커밋ConsumerAwareMessageListener메시지 처리 시 Consumer 객체 접근BatchMessageListener배치 메시지 처리BatchAcknowledgingMessageListener배치 메시지 처리 후 수동 커밋 예제더보기더보기MessageListener@KafkaListener(topics = "topic1")public void onMessage(ConsumerRecord record) { System..

[Spring for Apache Kafka] 2. Sending Messages

1. DefaultKafkaProducerFactory기본적으로 모든 클라이언트에서 공유하는 단일 Kafka 프로듀서를 생성 설정) DefaultKafkaProducerFactory더보기@Configurationpublic class KafkaProducerConfig { @Bean public DefaultKafkaProducerFactory producerFactory() { Map configs = new HashMap(); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); configs.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONF..

[Spring for Apache Kafka] 1. Basic

1. Connecting to KafkaFactory구성 요소역할ProducerFactory메시지 전송을 위한 팩토리 생성ConsumerFactory메시지 수신을 위한 팩토리 생성 FactoryListenerFactory의 Listener는 프로듀서/컨슈머가 만들어지거나 닫힐 때 호출하는 메서드를 정의한 인터페이스생성된 프로듀서/컨슈머의 bean id는 factory의 beanName + kafka client id 패턴으로 정의됩니다. 예제더보기public class MyProducerFactoryListener implements ProducerFactory.Listener { @Override public void producerAdded(String id, Producer produce..

[실전 카프카 개발부터 운영까지] 4. 카프카의 내부 동작 원리와 구현

고승범 님의 "실전 카프카 개발부터 운영까지" 책을 정리한 포스팅 입니다.1. 카프카 리플리케이션동작예제) 토픽 생성더보기/opt/bitnami/kafka/bin/kafka-topics.sh --create --topic topic_chat \--bootstrap-server localhost:9092 \--replication-factor 2 \--partitions 2 예제) 토픽 메시지 생성더보기/opt/bitnami/kafka/bin/kafka-console-producer.sh --topic topic_chat \ --bootstrap-server localhost:9092 예제) 토픽 조회더보기 /opt/bitnami/kafka/bin/kafka-topics.sh --topic topic_ch..

Kafka 2025.05.06

[Spring WebSockets] 2-3. STOMP: 부가 기능

1. Order of Messages브로커에서 클라이언트로 보내는 메시지는 clientOutboundChannel을 통해 전달됩니다.이 채널은 내부적으로 ThreadPoolExecutor(멀티스레드 풀)로 운영되기 때문에, 메시지들이 여러 스레드에서 처리됩니다.그래서 클라이언트가 실제로 받는 메시지 순서가 서버에서 보낸 순서와 다를 수 있습니다. 순서 보장 설정예제) Outbound 더보기@Configuration@EnableWebSocketMessageBrokerpublic class PublishOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer { @Override public void configureMessa..

Spring/Spring 2025.05.04

[Spring WebSockets] 2-1. STOMP: 주요 내용

1. STOMP란원래는 스크립트 언어(Ruby, Python, Perl 등)에서 엔터프라이즈 메시지 브로커와 통신할 수 있도록 만들어진 텍스트 기반 메시징 프로토콜.TCP, WebSocket 등 신뢰할 수 있는 양방향 스트리밍 프로토콜 위에서 동작 가능.텍스트 지향이지만, Payload(본문) 는 텍스트 또는 바이너리 모두 지원 가능. 2. 이점항목설명이점@Controller를 통한 메시지 핸들링@MessageMapping 메소드에 메시지 자동 분배 (STOMP destination 기준)- WebSocketHandler 하나로 모든 메시지 처리 X- 코드 구조가 모듈화되고 깔끔해짐Spring Security를 통한 보안 설정인증,권한 제어 가능(STOMP destination + 메시지 타입 기준)- ..

Spring/Spring 2025.05.03

[실전 카프카 개발부터 운영까지] 3. 카프카 기본 개념과 구조

고승범 님의 "실전 카프카 개발부터 운영까지" 책을 정리한 포스팅 입니다.1. 카프카 기초 다지기구성 요소정의핵심 특징비고/예시토픽메시지를 분류하는 이름메시지의 논리적 그룹화프로듀서-컨슈머 간 송수신 단위채팅 시스템, 로그 시스템 등파티션토픽을 나누는 단위병렬·분산 처리 가능 (1 컨슈머당 1 파티션 읽음)파티션 수 늘리기 가능 (줄이기 X)성능 향상이 목적세그먼트파티션 로그 파일을 나누는 단위일정 크기로 자동 분할됨메시지 순서 보장00000000000000000000.log (오프셋을 의미함)리플리케이션파티션을 브로커에 복제리더-팔로워 구조 (읽기/쓰기, 읽기)고가용성 (장애 복구)팩터 2: 유실 가능팩터 3: 유실 없음 예시) 토픽 생성더보기kafka-topics.sh --bootstrap-s..

Kafka 2025.05.03