busrefresh 요청 시 rabbitmq 큐 처리
618
작성한 질문수 1
안녕하세요
테스트를 하면서 찾아봐도 해당 부분에 대한 의문이 해결되지 않아서 문의 드립니다.
예를 들어 3대의 서버에 spring event bus를 구성한 후
1번 서버에서 busrefresh를 요청하면 3대 서버에서 refresh가 정상적으로 처리가 되는건 확인했는데
rabbitmq에서 큐를 확인해보면 busrefresh를 요청한 1번 큐에는 메시지가 없고
2번, 3번 서버에서는 큐 메시지가 들어오는데..
1번에서는 busrefresh 요청을 받기 때문에 큐 메시지 없이 처리가 가능하기 때문에 큐에서 제외되는건가요?
제가 확인한 내용이 맞다면 rabbmit exchange에서 topic으로 패턴 매칭되서 모든 큐에
메시지를 넣을 거 같은데..어떻게 자신의 큐만 제외시키는지 궁금합니다.
답변 2
0
안녕하세요, 이도원입니다.
우선, Spring Cloud Bus의 busrefresh를 호출하게 되면, Config server로부터 최신 설정 값을 갱신한 다음, AMQP Exchange에 refresh 이벤트 메시지를 전달하게 됩니다. Exchange에는 Queue들이 Binding 되어 있어 해당 메시지가 Queue에 전달 되어, 바로 Config Propertiese들의 값을 갱신하고 있습니다. 아래 첨부 이미지를 보시면, 이미지는 user-service에서 busrefresh를 호출한 내용인데, apigateway-service, order-service의 queued messages에만 메시지가 전달된 것 처럼 보이고 있고, message rates에는 세가지 서비스 모두 네트워크에 대한 사용 내역이 확인되고는 있습니다. 이는 publish와 consumer 모두에서 발생한 내역이 표시 되기 때문에, 세가지 서비스 모두 비슷한 내역이 출력된 것처럼 보이고 있습니다.
user-service에서 message publish를 하였기 때문에, 다른 서비스들처럼(consumer) queue message에 표시는 되지 않았지만, Config server로 부터 최신 설정 값들 중 RefreshScope로 선언된 값들을 읽어 들여 반영하고 있습니다.
관련 내용으로 actuator나 amqp 라이브러리에서 해당 코드를 참조해 드리고 싶었는데, 찾기가 쉽지 않네요. 추후에 관련 정보가 업데이트 되면 다시 공지하도록 하겠습니다.
감사합니다.
0
빠르고 자세한 답변 너무 감사합니다~
저도 로그와 rabbitMQ 처리까지 확인하고 참고할 소스나 디버깅을 해보려고 했는데
찾기 힘드네요. 설명해주신 내용 덕분에 100%는 아니지만 이해하는데 많은 도움이
되었습니다.
계속 좋은 강의 올려주셔서 감사드립니다.
0
안녕하세요, 인프런 AI 인턴이에요.
해당 질문에서 언급하신 것처럼, RabbitMQ의 Exchange는 패턴 매칭을 통해 메시지를 큐로 보내게 됩니다. 그래서 모든 서버에서 동일한 메시지를 받아야 할 때 유용하게 사용됩니다.
하지만, 언급하신 것처럼 특정 서버에서만 처리해야 할 경우 자신의 큐만 처리할 수 있도록 설정해야 합니다. 이때는, RabbitMQ에서 Direct Exchange를 사용하면 더욱 효과적입니다. Direct Exchange는 메시지를 특정 큐로 보내기 위해 Routing Key를 사용하는 구조입니다. 각 큐는 자신만의 Routing Key를 가지고 있고, 해당 Routing Key로 메시지를 보내면 해당 큐에서만 처리가 가능하게 됩니다.
따라서, Direct Exchange를 사용하여 Routing Key를 설정하고 각 큐에 해당 Routing Key를 할당하면, 자신의 큐만 처리할 수 있도록 설정할 수 있습니다.
더 자세한 내용은 RabbitMQ 홈페이지의 Direct Exchange에 대한 문서를 참고하시면 도움이 될 것입니다.
감사합니다.
kafka 업데이트 강의 듣고 시포요
0
91
2
강의 교안
0
79
2
마이크로서비스간 통신 시, 인증 처리
0
87
2
api gateway 에서 인증 처리
0
66
1
섹션 19 질문드립니다
0
60
2
강의 자료 업데이트
0
87
2
부하분산 강의 섹션
0
59
1
강의자료는 어디에서?
0
77
2
강의 자료는 어디서 다운 받을 수 있나요?
0
114
2
전체 사용자 조회시 오류
0
60
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
113
2
학습 방향
0
96
2
카프카 커넥터 사용 목적 문의
0
87
2
kafka 강의
0
109
2
서비스 디스커버리 종류
0
87
2
강의 자료에 대해서 궁금해요
0
119
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
91
2
Kafka Source Connect 버전 에러
0
90
2
소스커넥터는 사용안한 거 맞죠?
0
82
2
강의자료 업데이트 문의
0
97
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
59
1
강의 업데이트 계획이 궁금합니다.
0
114
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
163
2
어떤 것이 업데이트 된 건가요?
0
167
2






