묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
h2-console 왼쪽 메뉴에 테이블이 안보입니다.
빨간색 영역에 생성된 테이블이 있어야 하는데 안보입니다.refresh 버튼을 누르거나 로그아웃 후 로그인해도 안보입니다.show tables; 명령어를 실행하면 테이블은 존재합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
hasIpAddress 설정 403
왜 게이트웨이로 접근이 안될가요?hasipaddress값에 제 컴 아이피를 적고http://220.86.33.96:9295/welcome > 접근가능한데 http://220.86.33.96:8000/user-service/welcome > 접근불가떠요..이해가안됩니다 게이트웨이서버건 유저 서버건모두 제 컴퓨터고 제 서버 아이피가 220.86.33.96인데..hasIpAddress값을 127.0.0.1로 주고 접근하면 모든곳에서 접근이 됩니다..
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 업데이트 시기를 알 수 있을까요?
제목이 보채는것 같이보여 죄송합니다.최대한 소심? 하게 물어보고 싶은데 단어가 안떠오르네요. 아무튼 저번 업데이트된 1편 너무 잘 봤습니다.혹시 2편 강의 내용 업데이트 날자를 대충이라도(6월 전 이렇게...) 알 수 있을까요..?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
인증서, 공개키 파일은 언제 사용하나요?
안녕하세요. 비대칭키 암호화 강의 영상을 시청했습니다.강의를 들으면서 keystore 폴더에 keytool을 사용하여 3가지 파일을 생성했습니다.비공개키 파일: apiEncryptionKey.jks인증서 파일: trustServer.cer공개키 파일: publicKey.jks spring cloud config 프로젝트에서 다음과 같이 코드를 작성했습니다.pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> ConfigServiceApplication.java@SpringBootApplication @EnableConfigServer public class ConfigServiceApplication { public static void main(String[] args) { SpringApplication.run(ConfigServiceApplication.class, args); } } bootstrap.yml encrypt: # key: abcdefghijklmnopqrstuvwxyz0123456789 key-store: location: file:///${user.home}/Desktop/keystore/apiEncryptionKey.jks password: test1234 alias: apiEncryptionKey 강의를 다 듣고 난 후 궁금한점이 생겨서 테스트를 진행했습니다.keystore 폴더에서 인증서 파일, 공개키 파일을 삭제했습니다. http://127.0.0.1:8888/encrypthttp://127.0.0.1:8888/decrypthttp://localhost:8888/ecommerce/default강의영상에 나온 위 api 호출을 다시 시도해봤습니다.마치 대칭키 암호화 방식처럼 비공개키 하나로 암호화, 복호화를 하고 있습니다. 질문1: 인증서 파일, 공개키 파일은 언제 사용하는건지 궁금합니다.질문2: spring cloud config 프로젝트에서 비대칭키 암호화를 사용하고 있는건지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
UsernamePasswordAuthenticatioToken
안녕하세요, 문의 사항이 있어 글 납깁니다...당장에 이해가 안되어서요,,,,UserDetailService . loadUserByUsername()은 password활용 없이 ID만을 통해 find하게 짜도 문제 없나요,,? 어디선가 password를 따로 비교해주나요???....?어떤 컬럼인지 어떻게 알고 비교해주지,,,ㅁ 질문드립니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
인텔리제이에서 메이븐 사용 방법
메이븐 명령어로 프로젝트 실행시 인식을 못하는데..메이븐 버전도 나오지 않구요인텔리제이 버튼실행말고.. 명령어로 실행할때.. 인텔리제이에 내장된것으로 사용방법없나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
gateway 예외처리
안녕하세요!강사님 강의를 듣고 msa 적용하는 프로젝트를 진행중인데, 프로젝트 controller단 전역에서 발생하는 예외를 처리하고 싶어 @@RestControllerAdvice를 활용하려고 생각중입니다.msa에서 예외를 전역으로 처리하려면 gateway에서 @RestControllerAdvice를 활용해야 될까요? 아니면 각각의 마이크로서비스마다 @RestControllerAdvice를 활용해야 될까요?둘중 어떤 설계가 더 효율적일지 답변주시면 감사하겠습니다🙏🙏
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring boot 3 버젼애선, grafana Spring Cloud Gateway가 값을 못읽어옵니다.
https://grafana.com/grafana/dashboards/11506-spring-cloud-gateway/내용: Spring Cloud Gateway Dashboard provided by: https://github.com/spring-cloud/spring-cloud-gatewayA Gateway built on Spring Framework 5.x and Spring Boot 2.x providing routing and morespirng boot 3 이상이신 분들은 참고 바랍니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
springboote 3 관련 : zipkin 관련 로그에 traceId, spanid가 안나오는 문제가 있습니다.
안녕하세요강의에서는 zipkin 명령어창에서 실행시 접속로그가 나오며, orderservice에 주문 요청시traceid,spanid가 나오지만,저의 경우에는 zipkin 설치시 sl4fj 바인딩 오류가 있더라고요.혹시 이 사항이 orderservice에서 로그와 관련된 문제인지 아니면 gradle 설정에 관한 부분인지 어떤 부분을 확인해봐야 될까요?혹은 스프링부트 3.0버젼부터 되지 않는 부분인가요? *gradle 의존성 설정은 강의와 똑같습니다. **아래는 zipkin설치시 sl4fj 관련된 내용 입니다!SLF4J(W): No SLF4J providers were found.SLF4J(W): Defaulting to no-operation (NOP) logger implementationSLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.SLF4J(W): Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier.SLF4J(W): Ignoring binding found at [jar:nested:/C:/Users/son/zipkin.jar/!BOOT-INF/lib/log4j-slf4j-impl-2.21.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J(W): See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
오타발생 관련 카프카 특정 레코드 삭제가 윈도우 기반에서는 가능한가요?
안녕하세요! 강의 잘 보고 있습니다. topic에 입력시,오타가 있는 스크립트를 입력했는데,해당 오타가 있는 레코드가 지속적으로 남아 있더군요,또한 이로 인해 jsonParser 오류가 발생해서,topic을 삭제할까 하다가, 윈도우 기반에서는 오류가 발생할 수 있다고 (https://www.inflearn.com/questions/644825)하여, topic의 오타가 있는 레코드를 삭제하고자 합니다. 혹시 방법이 있을까요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
kafka connect status - tasks가 빈 배열
안녕하세요,kafka source connect 등록할 때 mariadb가 연결이 잘 안되서 h2 db로 진행을 했습니다.등록 후 kafka connect status를 보면 tasks가 빈 배열로 나오네요,,CLI에서는 마지막에 tables were not found라고 나오는데 테이블이 있는데도 없다고 하는데 혹시 이런 증상 해결하신 분 계실까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
예외처리시 포스트맨에 출력안되는 문제
안녕하세요 ! 강사님좋은 강의 잘 보고 있습니다.Feign의 예외처리에서 강의와 다른부분이 발생하여 질문 남깁니다. FeignErrorDecoder를 통해 예외 처리시 .[user-service] [-auto-1-exec-10] .w.s.m.a.ResponseStatusExceptionResolver : Resolved [org.springframework.web.server.ResponseStatusException: 404 NOT_FOUND "사용자의 주문이 비었습니다"] 위 로그가 user-service에서 error catch를 통해 잘 나오는 것을 확인했습니다.(09:36)강의영상에서는 404 Error를 전달하여 포스트맨 응답에서 Error msg까지 출력이 되었지만, 저의 경우에선 APIGatgeway에서의 로그및 포스트맨응답에Global Filter End : response id -> 403 FORBIDDEN으로 응답이 보내집니다. 이전 강의 부분(정상 응답)에서 해당 문제가 없었지만, 에러 응답시 403응답으로 처리되어지는 부분에 대해서 추가적으로 ApiGateWay에 대해서 github에서는 따로 handling이 없어서 추가적으로 handler를 등록하여 적용되어야하는 부분인지 여쭤봅니다 .++해당부분 user-service의 WebSecurity특정 ip 통과부분에 실제 ip(자신의 ip)를 누락하였네요.Error에 대한 부분도 응답이 됩니다.추가적으로 error에 대해서 403으로 응답이 되는부분은https://colabear754.tistory.com/182해당글을 참고하시면 될것같습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Filter의 로그가 출력되지 않습니다.
gateway에 의해서 api는 정상적으로 호출이 되는데 로그가 출력되지 않습니다.customFilter, globalFilter 모두 출력이 되지 않았습니다. 코드에 혹시 누락된 부분이 있을까요.Global Filterpackage com.example.springgateway.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; @Component @Slf4j public class GlobalFilter extends AbstractGatewayFilterFactory<GlobalFilter.Config> { public GlobalFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); log.info("Global Filter baseMessage : {}", config.getBaesMessage()); if (config.isPreLogger()) { log.info("Global Filter Start : request id -> {}", request.getId()); } else { log.info("preLogger is false"); } // Custom Post Filter return chain.filter(exchange).then(Mono.fromRunnable(()-> { if (config.isPostLogger()) { log.info("Global Filter End : request id -> {}", response.getStatusCode()); } else { log.info("postLogger is false"); } })); }; } @Data public static class Config { //put the configuration properties private String baesMessage; private boolean preLogger; private boolean postLogger; } } application.ymlspring: application: name: gateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ predicates: - Path=/first-service/** filters: - CustomFilter - id: second-service uri: http://localhost:8082/ predicates: - Path=/second-service/** filters: - CustomFilter # - AddRequestHeader=second-request, second-request-header2 # - AddResponseHeader=second-response, second-response-header2 - id: user-service uri: http://localhost:8083/ predicates: - Path=/user-service/** filters: - CustomFilter # filters: # - AddRequestHeader=user-request, user-request-header2 # - AddResponseHeader=user-response, user-response-header2 - id: catalog-service uri: lb://CATALOG-SERVICE predicates: - Path=/catalog-service/** - id: order-service uri: lb://ORDER-SERVICE predicates: - Path=/order-service/** default-filters: - name: GlobalFilter args: baseMessage: Spring Cloud Gateway Global Filter preLogger: true postLogger: true eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka server: port: 8000 Filter Configpackage com.example.springgateway.config; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; //@Configuration public class FilterConfig { // @Bean public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) { return builder.routes() .route(r -> r.path("/user-service/**") .filters(f -> f.addRequestHeader("user-request", "user-request-header") .addResponseHeader("user-response", "user-response-header")) .uri("http://localhost:8083/")) .route(r -> r.path("/second-service/**") .filters(f -> f.addRequestHeader("second-request", "second-request-header") .addResponseHeader("second-response", "second-response-header")) .uri("http://localhost:8082/")) .build(); } } Postman 실행 결과
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring config bus에 actuator 안쓰는거같은데 설치하는 이유있나요?
궁금힌ㅂ니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
kafka producer/consumer test
해당 예제를 통해 주키퍼를 먼저 실행을 해볼려하지만 계속해서 해당 classpath를 찾지 못하고 있습니다. 비슷한 상황을 겪은 사람들의 경우 바이너리 파일이 아닌 소스 파일을 다운 받아 해당 문제를 겪었다고 했지만 저의 경우 알맞은 파일을 설치하여 압축을 해제하였는데 어떤게 원인일까요
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 싱크 커넥터로 DB에 적용이 안되어 질문드리게 되었습니다.
좋은강의 잘듣고있습니다! 다름아니라 현재 싱크 커넥터등록후 DB에 데이터가 등록되지 않고 있습니다.먼저 아래사진처럼 post요청을 통해 커넥터 등록을 하였습니다.토픽은 예제를 똑같이 따라하였을 때도 안되었어서 my-topic-orders로 새로 바꿔서 등록하였습니다.이에 맞게 테이블도 아래 사진처럼 생성하였습니다. post요청을 한 후 주문이 해당 토픽으로 전달했음에도 아래 사진처럼 DB에 적용이 되지않아 어디가 문제일지 커뮤니티를 뒤져도 잘모르겠어서 질문드립니다 ㅠㅠ (토픽도 "my_topic_orders"로 지정하였습니다.)현재 커넥터 등록상태입니다.추가로 kafka confluent에서 발생한 로그입니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
유저서비스의 yml파일 관련 profile 설정방법이 궁금합니다.
안녕하세요 강의를 듣던중 profile이 어떻게 적용되는지 궁금하여 질문드리게 되었습니다. 현재 dev관련 설정파일이 왼쪽공통 항목 테스트를 위한 application.yml 파일이 오른쪽입니다.모두 같은 common이라는 환경변수로 어떤 .yml파일의 값을 사용하는지 확인하였는데요user-service의profile설정은 아래 사진처럼 하였습니다.health-check를 보내서 common값을 확인했을 때,아래사진 처럼 application.yml파일의 common값을 사용하는 것을 확인하였습니다. 공통으로 가져오는 application.yml파일의 common값과 ecommerce-dev.yml의 common값이 겹칠 때 profile을 dev라 설정했기 때문에health-check로 요청시common값에 common-dev 로 찍힐것이라 생각했었습니다. 혹시 common-dev로 안찍히는 이유가 공통으로 가져오는 application.yml값과 환경변수가 겹친다면 공통으로 가져오는 yml파일의 환경변수로 찍히는 것인지 제가 profile설정을 잘못한 것인지 궁금해 질문드렸습니다 ㅠㅠ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
method patch 설정시 404에러
- id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** - Method=PATCH filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment} - AuthorizationHeaderFilter 이렇게 작성했는데요@postmapping("/user/test")@patchmapping("/user/test")포스트는 잘동작하는데 패치는 404가 납니다뭐가 문제일까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
ReWritePath필터의 세그먼트 식은 정규식일까요??
안녕하세요 선생님!강의를 잘 듣던 와중에 궁금증이 생겨 질문 드립니다. 게이트 웨이에 설정한 필터 중,요청 uri를 재정의 하기 위해서 RewritePath 라는 필터를 사용하잖아요. 이때 /user-service/(?<segment>.*), /$\{segment}는 정규식인가요??... 정규식표현에 segment라는 것이 찾아봐도 나오지 않아서요!!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
instance_id 설정이 적용되지 않고 있습니다.
안녕하세요 위 사진처럼 인스턴스의 ID가 아래의 yml파일로 설정한데로 적용되지 않고 있어 질문드렸습니다. 커서를 두었을 때 포트번호도 확인해서 해당 인스턴스인것도 확인하였습니다. 원인이나 해결방법을 알 수 있을까요 ㅠㅠ