Event Service 백엔드 테스트 완료

- 백엔드 API 테스트 완료 (8/8 성공)
- Redis, PostgreSQL, Kafka 연동 검증
- ErrorHandlingDeserializer를 통한 Kafka Consumer 안정화
- 테스트 결과 보고서 작성 (develop/dev/test-backend.md)
- 실행 프로파일 추가 (event-service/.run/)
- 설정 일치 검증 완료 (application.yml ↔ run.xml)
This commit is contained in:
merrycoral
2025-10-28 11:45:09 +09:00
parent d89ee4edf7
commit 435ba1a86c
6 changed files with 447 additions and 241 deletions
@@ -11,6 +11,7 @@ import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.*;
import org.springframework.kafka.listener.ContainerProperties;
import org.springframework.kafka.support.serializer.ErrorHandlingDeserializer;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import org.springframework.kafka.support.serializer.JsonSerializer;
@@ -68,6 +69,7 @@ public class KafkaConfig {
/**
* Kafka Consumer 설정
* ErrorHandlingDeserializer를 사용하여 역직렬화 오류를 처리합니다.
*
* @return ConsumerFactory 인스턴스
*/
@@ -76,10 +78,20 @@ public class KafkaConfig {
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
config.put(ConsumerConfig.GROUP_ID_CONFIG, consumerGroupId);
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
// ErrorHandlingDeserializer로 래핑하여 역직렬화 오류 처리
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer.class);
// 실제 Deserializer 설정
config.put(ErrorHandlingDeserializer.KEY_DESERIALIZER_CLASS, StringDeserializer.class);
config.put(ErrorHandlingDeserializer.VALUE_DESERIALIZER_CLASS, JsonDeserializer.class);
// JsonDeserializer 설정
config.put(JsonDeserializer.TRUSTED_PACKAGES, "*");
config.put(JsonDeserializer.USE_TYPE_INFO_HEADERS, false);
config.put(JsonDeserializer.VALUE_DEFAULT_TYPE, "java.util.HashMap");
config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
config.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
@@ -9,8 +9,8 @@ spring:
password: ${DB_PASSWORD:eventpass}
driver-class-name: org.postgresql.Driver
hikari:
maximum-pool-size: 10
minimum-idle: 5
maximum-pool-size: 5
minimum-idle: 2
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
@@ -22,9 +22,9 @@ spring:
ddl-auto: ${DDL_AUTO:update}
properties:
hibernate:
format_sql: true
format_sql: false
show_sql: false
use_sql_comments: true
use_sql_comments: false
jdbc:
batch_size: 20
time_zone: Asia/Seoul
@@ -40,9 +40,9 @@ spring:
connect-timeout: 60000ms
lettuce:
pool:
max-active: 10
max-idle: 5
min-idle: 2
max-active: 5
max-idle: 3
min-idle: 1
max-wait: -1ms
shutdown-timeout: 200ms
@@ -96,15 +96,22 @@ management:
logging:
level:
root: INFO
com.kt.event: ${LOG_LEVEL:DEBUG}
org.springframework: INFO
org.springframework.data.redis: DEBUG
io.lettuce.core: DEBUG
org.hibernate.SQL: ${SQL_LOG_LEVEL:DEBUG}
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
com.kt.event: ${LOG_LEVEL:INFO}
org.springframework: WARN
org.springframework.data.redis: WARN
io.lettuce.core: WARN
org.hibernate.SQL: ${SQL_LOG_LEVEL:WARN}
org.hibernate.type.descriptor.sql.BasicBinder: WARN
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: ${LOG_FILE:logs/event-service.log}
logback:
rollingpolicy:
max-file-size: 10MB
max-history: 7
total-size-cap: 100MB
# Springdoc OpenAPI Configuration
springdoc: