Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/backend/chat_server/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM --platform=linux/amd64 azul/zulu-openjdk:17
ARG JAR_FILE=build/libs/chat_server1.jar
COPY ${JAR_FILE} ./chat_server1.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-jar", "./chat_server1.jar"]

4 changes: 4 additions & 0 deletions src/backend/chat_server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ java {
}
}

bootJar {
archiveFileName = 'chat_server1.jar'
}

repositories {
mavenCentral()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class KafkaProducer {

public void sendChatMessage(ChatMessageToKafka chatMessageToKafka, Long roomId) {
String jsonChatMessage = gson.toJson(chatMessageToKafka);
kafkaTemplate.send("${topic.chat}", String.valueOf(roomId), jsonChatMessage).whenComplete((result, ex) -> { //키 값 설정으로 순서 보장, 실시간성이 떨어짐, 고민해봐야 할 부분
kafkaTemplate.send("jootalkpia.chat.prd.message", String.valueOf(roomId), jsonChatMessage).whenComplete((result, ex) -> { //키 값 설정으로 순서 보장, 실시간성이 떨어짐, 고민해봐야 할 부분
if (ex == null) {
log.info(result.toString());
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/chat_server/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ group:
chat: chat-message-handle-consumer-group

server:
port: 8081
port: ${CHAT_PORT1}
5 changes: 5 additions & 0 deletions src/backend/history_server/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM --platform=linux/amd64 azul/zulu-openjdk:17
ARG JAR_FILE=build/libs/history_server.jar
COPY ${JAR_FILE} ./history_server.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java", "-jar", "./history_server.jar"]
8 changes: 8 additions & 0 deletions src/backend/history_server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ java {
}
}

bootJar {
archiveFileName = 'history_server.jar'
}

repositories {
mavenCentral()
}
Expand All @@ -31,6 +35,10 @@ dependencies {
// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

//kafka
implementation 'org.springframework.kafka:spring-kafka'
testImplementation 'org.springframework.kafka:spring-kafka-test'
}

tasks.named('test') {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
package com.jootalkpia.history_server.domain;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Document(collation = "chatMessage")
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class ChatMessage extends BaseTimeEntity {

@Id
Expand All @@ -25,12 +18,25 @@ public class ChatMessage extends BaseTimeEntity {

private String message; // 내용

@Builder.Default
private MessageType messageType = MessageType.TEXT; // 메시지 타입

@Builder.Default
private Boolean isAttachment = false; // 파일 첨부 여부

@Builder.Default
private Long threadId = null; // 원본 메시지 ID 최초일경우 null

protected ChatMessage() {
}

private ChatMessage(Long channelId, Long userId, String message, MessageType messageType, Boolean isAttachment, Long threadId) {
this.channelId = channelId;
this.userId = userId;
this.message = message;
this.messageType = messageType;
this.isAttachment = isAttachment;
this.threadId = threadId;
}

public static ChatMessage of(Long channelId, Long userId, String message, MessageType messageType, Boolean isAttachment, Long threadId) {
return new ChatMessage(channelId, userId, message, messageType, isAttachment, threadId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,15 @@
import com.jootalkpia.history_server.domain.ChatMessage;
import com.jootalkpia.history_server.domain.MessageType;

public record ChatMessageSaveRequest (

Long channelId, // 채널 ID

public record ChatMessageSaveRequest(
Long channelId, // 채널 ID
Long userId, // 유저 ID

String message, // 메시지 내용

MessageType messageType, // 메시지 타입 (TEXT, IMAGE 등)

Boolean isAttachment, // 파일 첨부 여부

Long threadId // 원본 메시지 ID (최초 메시지일 경우 null)

) {
public ChatMessage toEntity() {
return ChatMessage.builder()
.channelId(channelId)
.userId(userId)
.message(message)
.messageType((messageType != null) ? messageType : MessageType.TEXT) // 기본값 설정
.isAttachment((isAttachment != null) ? isAttachment : false) // 기본값 설정
.threadId(threadId)
.build();
) {
public ChatMessage toDocument() {
return ChatMessage.of(channelId, userId, message, messageType, isAttachment, threadId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.jootalkpia.history_server.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.jootalkpia.history_server.dto.ChatMessageSaveRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
@Slf4j
public class KafkaConsumer {

private final HistoryCommandService historyCommandService;

@KafkaListener(
topics = "${topic.chat}",
groupId = "${group.history}"
)
public void processChatMessage(String kafkaMessage) {
log.info("message ===> " + kafkaMessage);

ObjectMapper mapper = new ObjectMapper();

try {
ChatMessageSaveRequest chatMessageSaveRequest = mapper.readValue(kafkaMessage, ChatMessageSaveRequest.class); //메시지 DTO 변경, 임시 DTO
historyCommandService.saveChatMessage(chatMessageSaveRequest.toDocument());

log.info("dto ===> " + chatMessageSaveRequest);
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
}
}
}
15 changes: 14 additions & 1 deletion src/backend/history_server/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
spring:
data:
mongodb:
uri: ${MONGO_URI}
uri: ${MONGO_URI}
kafka:
consumer:
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
bootstrap-servers: ${KAFKA_SERVER}

topic:
chat: jootalkpia.chat.prd.message
group:
history: chat-message-save-consumer-group

server:
port: ${HISTORY_PORT}
3 changes: 3 additions & 0 deletions src/backend/push_server/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
37 changes: 37 additions & 0 deletions src/backend/push_server/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
12 changes: 12 additions & 0 deletions src/backend/push_server/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Azul Zulu JDK 17 기반 이미지 사용
FROM azul/zulu-openjdk:17

# 작업 디렉토리 설정
WORKDIR /app

# 빌드된 JAR 파일 복사
ARG JAR_FILE=build/libs/workspace_server-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar

# 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
38 changes: 38 additions & 0 deletions src/backend/push_server/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.7'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.jootalkpia'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.kafka:spring-kafka'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading