티스토리 뷰

기타

RabbitMQ → Kafka 직접 치환

ipxy 2025. 3. 31. 13:24
728x90

 

✅ 전환 전략 요약: "RabbitMQ → Kafka 직접 치환"

RabbitMQ를 완전히 제거하고 Spring Boot에서 Kafka만 사용하는 구조로 바꾸는 단계별 가이드입니다.


🛠 단계별 전환 방법

1. RabbitMQ 관련 코드 제거

  • RabbitTemplate, @RabbitListener, Queue, Exchange, Binding 등 모든 RabbitMQ 의존성과 Bean 제거
  • spring-boot-starter-amqp 의존성 제거
// 제거
// implementation 'org.springframework.boot:spring-boot-starter-amqp'

2. Kafka 의존성 추가

// build.gradle
dependencies {
    implementation 'org.springframework.kafka:spring-kafka'
}

3. Kafka 설정 (application.yml)

spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-group
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

4. Kafka Producer 작성

@Service
public class KafkaMessageProducer {

    private final KafkaTemplate<String, String> kafkaTemplate;

    public KafkaMessageProducer(KafkaTemplate<String, String> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    public void send(String topic, String message) {
        kafkaTemplate.send(topic, message);
    }
}

5. Kafka Consumer 작성

@Component
public class KafkaMessageConsumer {

    @KafkaListener(topics = "my-topic", groupId = "my-group")
    public void consume(String message) {
        System.out.println("Consumed message: " + message);
    }
}

6. 메시지 전송 방식 변경 (서비스 단)

기존에 rabbitTemplate.convertAndSend(...) 사용하던 부분을 아래처럼 교체합니다:

kafkaMessageProducer.send("my-topic", "Hello Kafka!");

📌 추가 팁

항목  설명
구조 개선 Kafka는 이벤트 기반이므로, 기존 큐 기반 구조를 이벤트 발행/구독 모델로 변경하면 더 자연스러움
성능 Kafka는 병렬 소비, 대용량 처리에 강함 – 파티션 고려 필요
DTO 전송 Kafka에서 JSON 메시지로 DTO 주고받기 가능 (Jackson 사용)

🎯 예시 시나리오

기존 구조 (RabbitMQ)  전환 후 (Kafka)
주문 생성 → 큐 전송 주문 생성 → Kafka Topic 발행
@RabbitListener 로 소비 @KafkaListener 로 소비

필요하시면 "DTO 객체를 JSON으로 주고받는 Kafka 코드"나
"Kafka를 활용한 마이크로서비스 통신 예제"도 만들어드릴 수 있어요.

혹시 기존 메시지 구조(JSON, DTO 등)나 서비스 이름을 알려주실 수 있나요?
그럼 그걸 기반으로 예시 코드를 바로 보여드릴게요!

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함