JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] Spring Boot로 Kafka에 메시지 넣는 코드 작성하기 (Producer)

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
Kafka
createdAt
Dec 6, 2025
series
실전에서 바로 써먹는 Kafka 입문
slug
practice-producer-code-with-spring-boot
type
post
updatedAt
Dec 6, 2025 05:39 AM

✅ Spring Boot로 Kafka에 메시지 넣는 코드 작성하기

notion image
위 그림과 같이 Spring Boot 서버를 활용해 Kafka에 메시지를 넣어보자.
 
  1. 사용자로부터 API 요청을 받을 Controller 만들기
    1. EmailController
      @RestController @RequestMapping("/api/emails") public class EmailController { private final EmailService emailService; public EmailController(EmailService emailService) { this.emailService = emailService; } @PostMapping public ResponseEntity<String> sendEmail( @RequestBody SendEmailRequestDto sendEmailRequestDto ) { emailService.sendEmail(sendEmailRequestDto); return ResponseEntity.ok("이메일 발송 요청 완료"); } }
       
      SendEmailRequestDto (Request Body 정보를 받을 객체)
      public class SendEmailRequestDto { private String from; // 발신자 이메일 private String to; // 수신자 이메일 private String subject; // 이메일 제목 private String body; // 이메일 본문 // getter 함수 public String getFrom() { return from; } public String getTo() { return to; } public String getSubject() { return subject; } public String getBody() { return body; } }
       
  1. Service 만들기
    1. EmailSendMessage (Kafka에 전달할 메시지의 정보를 담는 객체)
      public class EmailSendMessage { private String from; // 발신자 이메일 private String to; // 수신자 이메일 private String subject; // 이메일 제목 private String body; // 이메일 본문 public EmailSendMessage(String from, String to, String subject, String body) { this.from = from; this.to = to; this.subject = subject; this.body = body; } public String getFrom() { return from; } public String getTo() { return to; } public String getSubject() { return subject; } public String getBody() { return body; } }
       
      EmailService
      @Service public class EmailService { // <메시지의 Key 타입, 메시지의 Value 타입> // Kafka에 넣는 메시지는 Key-Value 형태로 넣을 수도 있고, // Key는 생략한 채로 Value만 넣을 수도 있다고 얘기했다. // 실습에서는 메시지를 만들 때 key는 생략한 채로 value만 넣을 예정이다. private final KafkaTemplate<String, String> kafkaTemplate; public EmailService(KafkaTemplate<String, String> kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } public void sendEmail(SendEmailRequestDto request) { EmailSendMessage emailSendMessage = new EmailSendMessage( request.getFrom(), request.getTo(), request.getSubject(), request.getBody() ); // 위에서 메시지의 valueEmailSendMessage 타입을 String으로 설정을 했다. // 그래서 객체를 String으로 변환해서 넣어주어야 한다. this.kafkaTemplate.send("email.send", toJsonString(emailSendMessage)); } // 객체를 Json 형태의 String으로 만들어주는 메서드 // (클래스로 분리하면 더 좋지만 편의를 위해 메서드로만 분리) private String toJsonString(Object object) { ObjectMapper objectMapper = new ObjectMapper(); try { String message = objectMapper.writeValueAsString(object); return message; } catch (JsonProcessingException e) { throw new RuntimeException("Json 직렬화 실패"); } } }
       
 
👨🏻‍🏫
Kafka에 메시지를 넣는 Producer 코드는 전부 다 작성했다. 다음 강의에서는 Spring Boot가 Kafka에 메시지를 정상적으로 잘 넣는 지 테스트해보자.
author
JSCODE 박재성
category
Kafka
createdAt
Dec 6, 2025
series
실전에서 바로 써먹는 Kafka 입문
slug
type
series-footer
updatedAt
Dec 6, 2025 05:39 AM
📎
이 글은 실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편) 강의의 수업 자료 중 일부입니다.