1. Pub / Sub 이란?
- 발행 / 구독 구조
- 데이터는 middleware 를 통해서 전달
2. Redis Pub / Sub 구조 특징
- 실시간으로 빠르게 통신
- 데이터가 유실이 될 가능성이 있음 ( 큐를 이용해 저장 x )
- 최대 1회 전송 패턴이 적합한 경우 ( 중복 전송 X )
3. Redis Pub / Sub 이용 채팅방 구현
- Redis config 안에 Listener 관련 코드 추가
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory());
return container;
}
- Service를 이용해 해당 기능 구현
@Service
@RequiredArgsConstructor
public class ChatService implements MessageListener {
private final RedisMessageListenerContainer container;
private final RedisTemplate<String,String> redisTemplate;
public void enterChatRoom(String chatRoomName){
container.addMessageListener(this, new ChannelTopic(chatRoomName));
}
public void sendMessage(String chatRoomName, String msg){
redisTemplate.convertAndSend(chatRoomName, msg);
}
public void exitChatRoom(String chatRoomName){
container.removeMessageListener(this);
}
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("message = " + message);
}
}
'Redis > Spring Data Redis' 카테고리의 다른 글
[Spring Data Redis] Streams (0) | 2024.05.14 |
---|---|
[Spring Data Redis] HyperLogLog (0) | 2024.05.13 |
[Spring Data Redis] Sorted Sets (0) | 2024.05.13 |
[Spring Data Redis] Hashes (0) | 2024.05.13 |
[Spring Data Redis] Sets (0) | 2024.05.13 |