diff --git a/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/dto/HuddleToKafka.java b/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/dto/HuddleToKafka.java new file mode 100644 index 00000000..702d7e9a --- /dev/null +++ b/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/dto/HuddleToKafka.java @@ -0,0 +1,7 @@ +package com.jootalkpia.chat_server.dto; + +public record HuddleToKafka( + Long channelId, + String status +) { +} diff --git a/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/service/KafkaConsumer.java b/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/service/KafkaConsumer.java index 677fed9d..e3cc20eb 100644 --- a/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/service/KafkaConsumer.java +++ b/src/backend/chat_server/src/main/java/com/jootalkpia/chat_server/service/KafkaConsumer.java @@ -84,22 +84,22 @@ public void processPushMessage(String kafkaMessage) { } @KafkaListener( - topics = "${topic.hurdle}", - groupId = "${group.hurdle}" + topics = "${topic.huddle}", + groupId = "${group.huddle}" ) public void processHurdleStatusMessage(String kafkaMessage) { - log.info("message ===> " + kafkaMessage); - - ObjectMapper mapper = new ObjectMapper(); - + log.info("Received Kafka huddle message ===> {}", kafkaMessage); try { - ChatMessageToKafka chatMessageToKafka = mapper.readValue(kafkaMessage, ChatMessageToKafka.class); //추후 DTO 변경 필수 + HuddleToKafka huddleData = objectMapper.readValue(kafkaMessage, HuddleToKafka.class); + String huddleDataJson = objectMapper.writeValueAsString(huddleData); + Long channelId = huddleData.channelId(); - // 클라이언트에게 허들 관련 데이터 전달하는 로직 + messagingTemplate.convertAndSend("/subscribe/hurdle." + channelId, huddleDataJson); + + log.info("Broadcasted hurdle data via WebSocket: " + huddleDataJson); - log.info("dto ===> " + chatMessageToKafka.toString()); } catch (Exception ex) { - log.error(ex.getMessage(), ex); // 추후에 GlobalException 처리 + log.error("Error processing huddle message: " + ex.getMessage(), ex); } } @@ -119,7 +119,7 @@ public void processChannelStatusMessage(String kafkaMessage) { log.info("Broadcasted workspace data via WebSocket: " + workspaceDataJson); } catch (Exception ex) { - log.error("Error processing stock message: " + ex.getMessage(), ex); + log.error("Error processing workspace message: " + ex.getMessage(), ex); } } } diff --git a/src/backend/chat_server/src/main/resources/application.yml b/src/backend/chat_server/src/main/resources/application.yml index 7b6e9194..8fc478ff 100644 --- a/src/backend/chat_server/src/main/resources/application.yml +++ b/src/backend/chat_server/src/main/resources/application.yml @@ -38,14 +38,14 @@ topic: minute: jootalkpia.stock.prd.minute chat: jootalkpia.chat.prd.message push: jootalkpia.push.prd.message - hurdle: jootalkpia.huddle.prd.status + huddle: jootalkpia.huddle.prd.status workspace: jootalkpia.workspace.prd.channel group: minute: minute-price-save-consumer-group-${SERVER_PORT} chat: chat-message-handle-consumer-group-${SERVER_PORT} push: push-message-handle-consumer-group-${SERVER_PORT} - hurdle: huddle-status-handle-consumer-group-${SERVER_PORT} + huddle: huddle-status-handle-consumer-group-${SERVER_PORT} workspace: workspace-channel-handle-consumer-group-${SERVER_PORT} server: diff --git a/src/backend/workspace_server/src/main/java/com/jootalkpia/workspace_server/service/KafkaProducer.java b/src/backend/workspace_server/src/main/java/com/jootalkpia/workspace_server/service/KafkaProducer.java index 091328ee..fd15f5ec 100644 --- a/src/backend/workspace_server/src/main/java/com/jootalkpia/workspace_server/service/KafkaProducer.java +++ b/src/backend/workspace_server/src/main/java/com/jootalkpia/workspace_server/service/KafkaProducer.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.jootalkpia.workspace_server.dto.WorkspaceToKafka; -import com.jootalkpia.workspace_server.entity.MessageToKafka; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.kafka.core.KafkaTemplate;