mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-12 22:59:10 +00:00
meeting 및 notification 실행환경 설정
This commit is contained in:
@@ -1,52 +1,100 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="notification-service" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
|
||||
<module name="notification.main" />
|
||||
<option name="SPRING_BOOT_MAIN_CLASS" value="com.unicorn.hgzero.notification.NotificationApplication" />
|
||||
<option name="ACTIVE_PROFILES" value="dev" />
|
||||
<option name="PROGRAM_PARAMETERS" value="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<envs>
|
||||
<!-- Database Configuration -->
|
||||
<env name="DB_HOST" value="4.230.159.143" />
|
||||
<env name="DB_NAME" value="notificationdb" />
|
||||
<env name="DB_USERNAME" value="hgzerouser" />
|
||||
<env name="DB_PASSWORD" value="Hi5Jessica!" />
|
||||
<env name="DB_PORT" value="5432" />
|
||||
|
||||
<!-- Server Configuration -->
|
||||
<env name="SERVER_PORT" value="8085" />
|
||||
|
||||
<!-- Redis Configuration -->
|
||||
<env name="REDIS_HOST" value="20.249.177.114" />
|
||||
<env name="REDIS_PORT" value="6379" />
|
||||
<env name="REDIS_PASSWORD" value="Hi5Jessica!" />
|
||||
|
||||
<!-- JPA Configuration -->
|
||||
<env name="JPA_DDL_AUTO" value="update" />
|
||||
|
||||
<!-- JWT Configuration -->
|
||||
<env name="JWT_SECRET" value="dev-jwt-secret-key-for-development-only" />
|
||||
|
||||
<!-- Spring Profile -->
|
||||
<env name="SPRING_PROFILES_ACTIVE" value="dev" />
|
||||
|
||||
<!-- Logging Configuration -->
|
||||
<env name="LOG_LEVEL_ROOT" value="INFO" />
|
||||
<env name="LOG_LEVEL_APP" value="DEBUG" />
|
||||
<env name="LOG_FILE" value="logs/notification-service.log" />
|
||||
|
||||
<!-- API Keys -->
|
||||
<env name="CLAUDE_API_KEY" value="sk-ant-ap..." />
|
||||
<env name="OPENAI_API_KEY" value="sk-proj-An4Q..." />
|
||||
<env name="OPENWEATHER_API_KEY" value="1aa5b..." />
|
||||
<env name="KAKAO_API_KEY" value="5cdc24...." />
|
||||
|
||||
<!-- Azure EventHub Configuration -->
|
||||
<env name="EVENTHUB_CONNECTION_STRING" value="Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=VUqZ9vFgu35E3c6RiUzoOGVUP8IZpFvlV+AEhC6sUpo=" />
|
||||
<env name="EVENTHUB_NAME" value="hgzero-eventhub-name" />
|
||||
</envs>
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
<configuration default="false" name="notification-service" type="GradleRunConfiguration" factoryName="Gradle">
|
||||
<ExternalSystemSettings>
|
||||
<option name="env">
|
||||
<map>
|
||||
<!-- Database Configuration -->
|
||||
<entry key="DB_KIND" value="postgresql" />
|
||||
<entry key="DB_HOST" value="4.230.159.143" />
|
||||
<entry key="DB_PORT" value="5432" />
|
||||
<entry key="DB_NAME" value="notificationdb" />
|
||||
<entry key="DB_USERNAME" value="hgzerouser" />
|
||||
<entry key="DB_PASSWORD" value="Hi5Jessica!" />
|
||||
|
||||
<!-- JPA Configuration -->
|
||||
<entry key="SHOW_SQL" value="true" />
|
||||
<entry key="JPA_DDL_AUTO" value="update" />
|
||||
|
||||
<!-- Redis Configuration -->
|
||||
<entry key="REDIS_HOST" value="20.249.177.114" />
|
||||
<entry key="REDIS_PORT" value="6379" />
|
||||
<entry key="REDIS_PASSWORD" value="Hi5Jessica!" />
|
||||
<entry key="REDIS_DATABASE" value="4" />
|
||||
|
||||
<!-- Server Configuration -->
|
||||
<entry key="SERVER_PORT" value="8085" />
|
||||
|
||||
<!-- JWT Configuration -->
|
||||
<entry key="JWT_SECRET" value="dev-jwt-secret-key-for-development-only" />
|
||||
<entry key="JWT_ACCESS_TOKEN_VALIDITY" value="3600" />
|
||||
<entry key="JWT_REFRESH_TOKEN_VALIDITY" value="604800" />
|
||||
|
||||
<!-- CORS Configuration -->
|
||||
<entry key="CORS_ALLOWED_ORIGINS" value="http://localhost:*" />
|
||||
|
||||
<!-- Mail Configuration -->
|
||||
<entry key="MAIL_HOST" value="smtp.gmail.com" />
|
||||
<entry key="MAIL_PORT" value="587" />
|
||||
<entry key="MAIL_USERNAME" value="" />
|
||||
<entry key="MAIL_PASSWORD" value="" />
|
||||
|
||||
<!-- Azure EventHub Configuration -->
|
||||
<entry key="EVENTHUB_CONNECTION_STRING" value="Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=VUqZ9vFgu35E3c6RiUzoOGVUP8IZpFvlV+AEhC6sUpo=" />
|
||||
<entry key="EVENTHUB_NAME" value="notification-events" />
|
||||
<entry key="AZURE_EVENTHUB_CONSUMER_GROUP" value="$Default" />
|
||||
|
||||
<!-- Azure Storage Configuration -->
|
||||
<entry key="AZURE_STORAGE_CONNECTION_STRING" value="xOQGJhDT6sqOGyTohS7K5dMgGNlryuaQSg8dNCJ40sdGpYok5T5Z88M3xVlk39oeFKiQdGYCihqC+AStBsoBPw==" />
|
||||
<entry key="AZURE_STORAGE_CONTAINER_NAME" value="eventhub-checkpoints" />
|
||||
|
||||
<!-- Notification Configuration -->
|
||||
<entry key="NOTIFICATION_FROM_EMAIL" value="noreply@hgzero.com" />
|
||||
<entry key="NOTIFICATION_FROM_NAME" value="HGZero" />
|
||||
<entry key="NOTIFICATION_RETRY_MAX_ATTEMPTS" value="3" />
|
||||
<entry key="NOTIFICATION_RETRY_INITIAL_INTERVAL" value="1000" />
|
||||
<entry key="NOTIFICATION_RETRY_MULTIPLIER" value="2.0" />
|
||||
|
||||
<!-- Logging Configuration -->
|
||||
<entry key="LOG_LEVEL_ROOT" value="INFO" />
|
||||
<entry key="LOG_LEVEL_APP" value="DEBUG" />
|
||||
<entry key="LOG_LEVEL_WEB" value="INFO" />
|
||||
<entry key="LOG_LEVEL_SECURITY" value="DEBUG" />
|
||||
<entry key="LOG_LEVEL_MAIL" value="DEBUG" />
|
||||
<entry key="LOG_LEVEL_SQL" value="DEBUG" />
|
||||
<entry key="LOG_LEVEL_SQL_TYPE" value="TRACE" />
|
||||
<entry key="LOG_FILE" value="logs/notification-service.log" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
<list />
|
||||
</option>
|
||||
<option name="taskNames">
|
||||
<list>
|
||||
<option value=":notification:bootRun" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="vmOptions" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<EXTENSION ID="com.intellij.execution.ExternalSystemRunConfigurationJavaExtension">
|
||||
<extension name="net.ashald.envfile">
|
||||
<option name="IS_ENABLED" value="false" />
|
||||
<option name="IS_SUBST" value="false" />
|
||||
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
|
||||
<option name="IS_IGNORE_MISSING_FILES" value="false" />
|
||||
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
|
||||
<ENTRIES>
|
||||
<ENTRY IS_ENABLED="true" PARSER="runconfig" IS_EXECUTABLE="false" />
|
||||
</ENTRIES>
|
||||
</extension>
|
||||
</EXTENSION>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<RunAsTest>false</RunAsTest>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
@@ -2,6 +2,11 @@ bootJar {
|
||||
archiveFileName = 'notification.jar'
|
||||
}
|
||||
|
||||
bootRun {
|
||||
// 환경 변수를 Spring Boot 애플리케이션에 전달
|
||||
environment = System.getenv()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Email
|
||||
implementation 'org.springframework.boot:spring-boot-starter-mail'
|
||||
@@ -9,6 +14,16 @@ dependencies {
|
||||
// Thymeleaf for email templates
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||
|
||||
// Spring Retry
|
||||
implementation 'org.springframework.retry:spring-retry'
|
||||
implementation 'org.springframework:spring-aspects'
|
||||
|
||||
// Azure Blob Storage
|
||||
implementation "com.azure:azure-storage-blob:${azureBlobVersion}"
|
||||
|
||||
// Azure Event Hubs
|
||||
implementation "com.azure:azure-messaging-eventhubs:${azureEventHubsVersion}"
|
||||
|
||||
// Azure Event Hubs Checkpoint Store
|
||||
implementation "com.azure:azure-messaging-eventhubs-checkpointstore-blob:${azureEventHubsCheckpointVersion}"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -129,7 +129,7 @@ public class NotificationResponse {
|
||||
@Schema(description = "발송 일시", example = "2025-01-23T10:05:00")
|
||||
private LocalDateTime sentAt;
|
||||
|
||||
@Schema(description = "실패 사유", example = null)
|
||||
@Schema(description = "실패 사유", example = "")
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.unicorn.hgzero.notification.event;
|
||||
|
||||
import com.azure.messaging.eventhubs.models.EventContext;
|
||||
import com.azure.messaging.eventhubs.models.EventData;
|
||||
import com.azure.messaging.eventhubs.models.PartitionEvent;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.unicorn.hgzero.notification.event.event.MeetingCreatedEvent;
|
||||
import com.unicorn.hgzero.notification.event.event.TodoAssignedEvent;
|
||||
@@ -27,7 +26,7 @@ import java.util.function.Consumer;
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class EventHandler implements Consumer<EventContext> {
|
||||
public class EventHandler implements Consumer<PartitionEvent> {
|
||||
|
||||
private final NotificationService notificationService;
|
||||
private final ObjectMapper objectMapper;
|
||||
@@ -36,13 +35,14 @@ public class EventHandler implements Consumer<EventContext> {
|
||||
/**
|
||||
* Event Hub 이벤트 처리
|
||||
*
|
||||
* @param eventContext Event Hub 이벤트 컨텍스트
|
||||
* @param partitionEvent Event Hub 파티션 이벤트
|
||||
*/
|
||||
@Override
|
||||
public void accept(EventContext eventContext) {
|
||||
EventData eventData = eventContext.getEventData();
|
||||
|
||||
public void accept(PartitionEvent partitionEvent) {
|
||||
try {
|
||||
// 이벤트 데이터 추출
|
||||
var eventData = partitionEvent.getData();
|
||||
|
||||
// 이벤트 속성 추출
|
||||
Map<String, Object> properties = eventData.getProperties();
|
||||
String topic = (String) properties.get("topic");
|
||||
@@ -63,8 +63,9 @@ public class EventHandler implements Consumer<EventContext> {
|
||||
}
|
||||
|
||||
// 체크포인트 업데이트 (처리 성공 시)
|
||||
eventContext.updateCheckpoint();
|
||||
log.info("이벤트 처리 완료 및 체크포인트 업데이트");
|
||||
// TODO: Azure Event Hubs 5.x API에 맞게 체크포인트 업데이트 구현 필요
|
||||
// partitionEvent.getPartitionContext().updateCheckpointAsync().block();
|
||||
log.info("이벤트 처리 완료");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("이벤트 처리 중 오류 발생", e);
|
||||
|
||||
Reference in New Issue
Block a user