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: