스프링 부트 Pub/Sub 패턴은 각 서버 간 느슨한 결합을 위해 활용이 된다.

메시지 발행자 publisher는 메시지 브로커 역할을 하는 레디스에게 메시지를 전달하게 되고, 메시지 수신자 subscriber는 레디스와 연결하고 있으며, 레디스로부터 발행된 메시지 또는 이벤트를 받게 된다.
flowchart LR
subgraph Loose coupling
direction TB
subgraph publish
server
end
subgraph Redis
end
subgraph subscribe
direction TB
server1
server2
server3
end
end
Redis --> publish
Redis --> server1
Redis --> server2
Redis -.-> server3
| 장점 | - 이벤트 발행자가 메시지 수신 대상을 직접적으로 알 필요가 없다. 따라서 수신 대상 서버의 증감에 따른 부담이 적다.
flowchart LR
direction TB
subgraph publish
server
end
subgraph subscribe
direction TB
server1
server2
server3
end
publish <--> server1
publish <--> server2
publish ~~~ server3
만약 메시지 브로커 없이 서버 to 서버로 전달하게 된다면 메시지 발행자 입장에서 수신되는 서버의 증감에 맞게 모든 서버에 연결하게 되는 소스 코드를 수정해야 하는 상황이 생기게 된다.

라이브 채팅 서비스의 경우
SUBSCRIBE : 채널을 등록할 수 있으며, 해당 채널에 발행된 메시지를 대기하게 된다.
127.0.0.1:6379 > **SUBSCRIBE** users:unregister
Reding messages...(press Ctrl-C to quit)
1) "subscribe"
2) "users:unregister"
3) (integer) 1