반응형
1. Redis 의존성 추가
먼저 build.gradle 또는 pom.xml 파일에 Redis 관련 의존성을 추가합니다.
build.gradle
groovy
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.springframework.boot:spring-boot-starter-redis'
}
pom.xml
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
</dependencies>
2. WebSocketConfig 설정
WebSocket 설정 클래스에서 Redis를 브로커로 설정합니다.
java
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// 내장 브로커 사용 대신 Redis 브로커 사용 설정
config.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost("localhost") // Redis 서버 호스트
.setRelayPort(6379) // Redis 서버 포트
.setClientLogin("guest") // Redis 서버 로그인 (필요시 설정)
.setClientPasscode("guest"); // Redis 서버 패스코드 (필요시 설정)
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
}
3. Redis 설정 클래스
Redis 설정 클래스를 추가하여 Redis 연결을 설정합니다.
java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory("localhost", 6379);
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
return template;
}
}
이제 Redis를 브로커로 사용하는 WebSocket 설정이 완료되었습니다. 이렇게 하면 WebSocket 메시징 브로커로 Redis를 사용하여 더 효율적인 실시간 통신을 구현할 수 있습니다.
Kafka는 여전히 백엔드 시스템 간의 비동기 메시징에 사용되고, WebSocket을 통해 클라이언트와 서버 간의 실시간 통신을 처리하게 됩니다. Redis는 WebSocket 브로커로서 메시지 전달을 관리하게 됩니다.