inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Filter우선순위 질문

426

신유승

작성한 질문수 1

0

안녕하세요! MSA강의 섹션2 Logging Filter관련 부분 듣다가 필터 우선순위와 관련된 궁금증이 생겨서 질문 남깁니다!

        GatewayFilter filter = new OrderedGatewayFilter((exchange, chain) -> {
            ServerHttpRequest request = exchange.getRequest();
            ServerHttpResponse response = exchange.getResponse();

            log.info("Logging Filter base message: {}",config.getBaseMessage());

            if(config.isPreLogger()){
                log.info("Logging Filter Start: request uri -> {}",request.getURI());
            }

            //Custom Post Filter
            return chain.filter(exchange).then(Mono.fromRunnable(()->{

                if(config.isPostLogger()){
                    log.info("Logging Filter End: response Code -> {}",response.getStatusCode());
                }
            }));
        }, Ordered.HIGHEST_PRECEDENCE);
        return filter;

위와 같은 방식으로 OrderedGatewayFilter를 사용해 filter를 생성했는데 이때 두번째 인자로 Ordered.HIGHEST_PRECEDENCE를 사용할 때와 Ordered.LOWEST_PRECEDENCE를 사용할 때 등장하는 filter 우선순위와 관련된 궁금증이 생겼습니다.

HIGHEST를 사용할때는 우선순위가 높은 필터가 먼저 나와서 강의에서도 그렇고 코드 실행결과

LoggingFIlter -> GlobalFilter -> CustomFilter의 순서로 Filter 가 등장했는데 그렇다면, 반대로 우선순위가 낮은 경우인 LOWEST를 사용할 때는

CustomFilter -> GlobalFilter -> LoggingFIlter의 순서로 filter가 등장해야한다고 생각하는데 결과가 그렇지 않아서 우선순위에 어떠한 개념이 있는지, 제가 어떤 개념을 놓치고 있는지 의문이 들어 질문글 남깁니다!

 

 

spring-boot jpa 아키텍처 spring-cloud kafka msa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

OrderedGatewayFilter는 GatewayFilter 인터페이스의 하위 인터페이스인 Ordered 인터페이스를 구현한 클래스입니다. Ordered 인터페이스는 필터의 우선순위를 결정하는 방법을 정의하고 있습니다.

Ordered.HIGHEST_PRECEDENCE와 Ordered.LOWEST_PRECEDENCE는 Ordered 인터페이스에서 정의된 우선순위 상수입니다. Ordered.HIGHEST_PRECEDENCE는 가장 높은 우선순위를 갖고 있으며, Ordered.LOWEST_PRECEDENCE는 가장 낮은 우선순위를 가지고 있습니다.

따라서, Ordered.HIGHEST_PRECEDENCE를 사용하는 필터는 다른 필터보다 먼저 실행됩니다. 반면, Ordered.LOWEST_PRECEDENCE를 사용하는 필터는 다른 필터보다 나중에 실행됩니다.

강의에서 보신 것처럼 HIGHEST를 사용하는 경우 LoggingFilter가 가장 먼저 실행되고, GlobalFilter, CustomFilter 순서로 실행됩니다.

즉, 필터 우선순위는 Ordered 인터페이스에서 정의된 상수에 따라 결정되며, 낮은 값일수록 우선순위가 높습니다.

그럼 다른 질문이 있으신가요?

kafka 업데이트 강의 듣고 시포요

0

83

1

강의 교안

0

71

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

64

1

섹션 19 질문드립니다

0

51

1

강의 자료 업데이트

0

81

1

부하분산 강의 섹션

0

56

1

강의자료는 어디에서?

0

69

1

강의 자료는 어디서 다운 받을 수 있나요?

0

109

1

전체 사용자 조회시 오류

0

57

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

108

2

학습 방향

0

94

2

카프카 커넥터 사용 목적 문의

0

85

2

kafka 강의

0

106

2

서비스 디스커버리 종류

0

86

2

강의 자료에 대해서 궁금해요

0

115

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

89

2

Kafka Source Connect 버전 에러

0

83

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

94

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

111

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

160

2

어떤 것이 업데이트 된 건가요?

0

162

2