From 43e23eb7aa4d1b1f0ae492ce0d737525153d8e59 Mon Sep 17 00:00:00 2001 From: Hyowon Yang Date: Fri, 24 Oct 2025 10:31:58 +0900 Subject: [PATCH] =?UTF-8?q?Kafka=20=EC=A1=B0=EA=B1=B4=EB=B6=80=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kt/event/analytics/config/KafkaConsumerConfig.java | 4 ++++ .../consumer/DistributionCompletedConsumer.java | 2 ++ .../messaging/consumer/EventCreatedConsumer.java | 2 ++ .../consumer/ParticipantRegisteredConsumer.java | 2 ++ analytics-service/src/main/resources/application.yml | 9 +++++++-- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/analytics-service/src/main/java/com/kt/event/analytics/config/KafkaConsumerConfig.java b/analytics-service/src/main/java/com/kt/event/analytics/config/KafkaConsumerConfig.java index 928b9cc..493a72d 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/config/KafkaConsumerConfig.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/config/KafkaConsumerConfig.java @@ -3,6 +3,7 @@ package com.kt.event.analytics.config; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.common.serialization.StringDeserializer; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; @@ -16,6 +17,7 @@ import java.util.Map; * Kafka Consumer 설정 */ @Configuration +@ConditionalOnProperty(name = "spring.kafka.enabled", havingValue = "true", matchIfMissing = true) public class KafkaConsumerConfig { @Value("${spring.kafka.bootstrap-servers}") @@ -41,6 +43,8 @@ public class KafkaConsumerConfig { ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory()); + // Kafka가 없어도 서비스가 시작되도록 자동 시작 비활성화 + factory.setAutoStartup(false); return factory; } } diff --git a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/DistributionCompletedConsumer.java b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/DistributionCompletedConsumer.java index bc7467b..7f0192a 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/DistributionCompletedConsumer.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/DistributionCompletedConsumer.java @@ -6,6 +6,7 @@ import com.kt.event.analytics.repository.ChannelStatsRepository; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component +@ConditionalOnProperty(name = "spring.kafka.enabled", havingValue = "true", matchIfMissing = false) @RequiredArgsConstructor public class DistributionCompletedConsumer { diff --git a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/EventCreatedConsumer.java b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/EventCreatedConsumer.java index 9a6cca0..1aa2ead 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/EventCreatedConsumer.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/EventCreatedConsumer.java @@ -6,6 +6,7 @@ import com.kt.event.analytics.repository.EventStatsRepository; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component +@ConditionalOnProperty(name = "spring.kafka.enabled", havingValue = "true", matchIfMissing = false) @RequiredArgsConstructor public class EventCreatedConsumer { diff --git a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/ParticipantRegisteredConsumer.java b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/ParticipantRegisteredConsumer.java index cb1be25..9b25852 100644 --- a/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/ParticipantRegisteredConsumer.java +++ b/analytics-service/src/main/java/com/kt/event/analytics/messaging/consumer/ParticipantRegisteredConsumer.java @@ -6,6 +6,7 @@ import com.kt.event.analytics.repository.EventStatsRepository; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component +@ConditionalOnProperty(name = "spring.kafka.enabled", havingValue = "true", matchIfMissing = false) @RequiredArgsConstructor public class ParticipantRegisteredConsumer { diff --git a/analytics-service/src/main/resources/application.yml b/analytics-service/src/main/resources/application.yml index 59f4dff..2be762a 100644 --- a/analytics-service/src/main/resources/application.yml +++ b/analytics-service/src/main/resources/application.yml @@ -43,13 +43,18 @@ spring: # Kafka kafka: - bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} + enabled: ${KAFKA_ENABLED:false} + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:4.230.50.63:9092} consumer: - group-id: analytics-service + group-id: ${KAFKA_CONSUMER_GROUP_ID:analytics-service} auto-offset-reset: earliest enable-auto-commit: true key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + properties: + connections.max.idle.ms: 10000 + request.timeout.ms: 5000 + session.timeout.ms: 10000 # Server server: