인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

jimmny님의 프로필 이미지
jimmny

작성한 질문수

실전! FastAPI 활용(비동기)

Redis Pub/Sub

메시지 브로커

해결된 질문

작성

·

42

0

Screenshot 2024-11-20 at 14.50.05.png.webp

안녕하세요,

Redis Pub/Sub 수강 중

위와 같이 메시지 브로커에 문제가 있는 것 같은데, 백엔드 지식이 부족해서 정확히 어떤 부분에서부터 원인을 찾아야할지 모르겠습니다.
서버/컨테이너 재시작 해봤는데 동일한 걸로 봐서 다른 문제인 것 같아서 도움 요청드립니다.
https://github.com/wozlsla/fastapi-async/blob/prac/src/shared/message_broker.py

답변 2

0

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. 먼저 redis가 정상적으로 동작되고 있는지 확인이 필요할 것 같습니다.

터미널에 docker logs chat-redis를 입력했을 때, 아래와 같은 로그가 출력되는지 확인해주실 수 있을까요?

"Ready to accept connections tcp"

 

정상적으로 동작 중이라면, redis-cli를 통해서 직접 채널을 구독하고, 메시지가 정상적으로 전파되는지 확인할 수 있습니다.

redis-cli -p 63790
SUBSCRIBE openchat

이후 채팅 화면에서 메시지 입력해서 메시지가 잘 전파되는지 확인

jimmny님의 프로필 이미지
jimmny
질문자

빠른 답변 감사합니다. 아래와 같이 진행 해 보았습니다.

 

1. docker logs chat-redis를 입력했을 때, 아래와 같은 로그 출력 확인 됐습니다.

"Ready to accept connections tcp"

2. docker exec -it ID redis-cli

127.0.0.1:6379> subscribe openchat
1) "subscribe"
2) "openchat"
3) (integer) 1

docker exec -it ID redis-cli -p 63790

Could not connect to Redis at 127.0.0.1:63790: Connection refused

이 상태에서 채팅 화면에 메시지 입력 시, 전파되지 않습니다.

  1. 위 상태에서 다른 터미널에서 실행

127.0.0.1:6379> pubsub channels
1) "openchat"
127.0.0.1:6379> pubsub numsub
(empty array)
127.0.0.1:6379> pubsub numpat
(integer) 0
127.0.0.1:6379> publish openchat "Hi"
(integer) 1
  1. 2번 터미널 상태

1) "message"
2) "openchat"
3) "Hi"

 

이런 식으로 실행 해 보는 게 맞는지 모르겠네요.

redis 는 잘 실행되고 있는 것 같습니다.

jimmny님의 프로필 이미지
jimmny
질문자

해결 했습니다.

src/main.py의 message_broker가 주석처리 된 것을 확인 못했습니다.

조금 더 꼼꼼히 살펴보고 질문 드릴걸 그랬네요 ;-).. 답변 감사드립니다!!

신동현님의 프로필 이미지
신동현
지식공유자

해결하셨다니 다행입니다!

0

안녕하세요, 인프런 AI 인턴입니다.
메시지 브로커 사용 시 발생하는 문제는 다양한 원인에서 기인할 수 있습니다만, Redis의 Pub/Sub 기능을 사용하는 경우 몇 가지 자주 발생하는 문제를 살펴보겠습니다.

  1. Redis 서버 연결 문제: Redis 서버가 제대로 시작되지 않았거나, 애플리케이션이 Redis 서버에 연결할 수 없는 경우 문제가 발생할 수 있습니다. 연결 설정(주소 및 포트 번호)을 확인하고 올바르게 설정되어 있는지 확인해 주세요.

  2. 포트 충돌: 여러 애플리케이션이 같은 포트를 사용하려고 할 경우 포트 충돌 문제가 발생할 수 있습니다. Redis 서버 및 애플리케이션의 포트 설정을 확인해 주세요.

  3. Redis 클라이언트 버그: Redis 클라이언트 라이브러리의 버그나 비호환성 문제로 인해 메시지 수신이나 전송이 제대로 이루어지지 않을 수 있습니다. 사용 중인 라이브러리가 최신인지 확인하고, 필요시 업데이트를 고려해 보세요.

  4. 구독자(Sub) 설정 오류: Redis Pub/Sub에서 메시지를 수신하는 구독자 설정이 제대로 되었는지 확인합니다. 올바른 채널을 구독 중인지 체크해 보세요.

관련해서 다른 사용자의 겪었던 문제들을 참고할 수 있는 자료도 추천드립니다. 다음 URL에서 Redis의 설정 오류 및 해결책에 대한 추가 정보를 찾을 수 있습니다:
- 레디스 호환 문제 해결 예제

위 내용이 해결의 실마리를 제공하기를 바라며, 만약 문제 해결이 어려운 경우 추가적인 정보를 주시면 여러 측면에서 도와드릴 수 있도록 하겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jimmny님의 프로필 이미지
jimmny

작성한 질문수

질문하기