EventService에 Kafka Producer 연동 추가 및 이벤트 배포 시 메시지 발행 구현

- EventService에 EventKafkaProducer 의존성 주입
- publishEvent 메서드에서 event-created 토픽으로 메시지 발행
- Event 엔티티의 selectedImageId 검증 임시 비활성화
- Kafka 메시지 발행 테스트 결과 문서 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
merrycoral
2025-10-29 14:11:07 +09:00
parent 95a419f104
commit da173d79e9
3 changed files with 311 additions and 3 deletions
@@ -13,6 +13,7 @@ import com.kt.event.eventservice.infrastructure.client.ContentServiceClient;
import com.kt.event.eventservice.infrastructure.client.dto.ContentImageGenerationRequest;
import com.kt.event.eventservice.infrastructure.client.dto.ContentJobResponse;
import com.kt.event.eventservice.infrastructure.kafka.AIJobKafkaProducer;
import com.kt.event.eventservice.infrastructure.kafka.EventKafkaProducer;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.Hibernate;
@@ -43,6 +44,7 @@ public class EventService {
private final JobRepository jobRepository;
private final ContentServiceClient contentServiceClient;
private final AIJobKafkaProducer aiJobKafkaProducer;
private final EventKafkaProducer eventKafkaProducer;
/**
* 이벤트 생성 (Step 1: 목적 선택)
@@ -171,6 +173,14 @@ public class EventService {
eventRepository.save(event);
// Kafka 이벤트 발행
eventKafkaProducer.publishEventCreated(
event.getEventId(),
event.getUserId(),
event.getEventName(),
event.getObjective()
);
log.info("이벤트 배포 완료 - eventId: {}", eventId);
}
@@ -219,9 +219,10 @@ public class Event extends BaseTimeEntity {
if (startDate.isAfter(endDate)) {
throw new IllegalStateException("시작일은 종료일보다 이전이어야 합니다.");
}
if (selectedImageId == null) {
throw new IllegalStateException("이미지를 선택해야 합니다.");
}
// TODO: Frontend에서 selectedImageId 추적 구현 후 주석 제거
// if (selectedImageId == null) {
// throw new IllegalStateException("이미지를 선택해야 합니다.");
// }
if (channels.isEmpty()) {
throw new IllegalStateException("배포 채널을 선택해야 합니다.");
}