Resilience4j - circuitbreaker를 보며 공부 중에 feign 에 Resilience4j의 cb나 bulkhead를 적용하게 되면 feignfallbackfactory 동작 시, throwable이 wrapping 되는 현상이 나타납니다. (ex. ExecutionException) 예를 들어, 4xx대의 에러, 즉 FeignException.BadRequest에 대한 분기 처리를 하려면 fallbackfactory 에서 throwable에 대한 원본 cause 를 추출하는 방법 밖에는 없을까요? (ex, throwable.getcause().getcause())
보통 토큰을 로컬 스토리지에 저장하나요? 그러면 명시적으로 로그아웃을 누르지 않는이상은 클라이언트가 로컬스토리지 비우는 방식을 사용해서 토큰을 초기화 하지는 않을 것 같은데 혹시 강의에서 로컬 스토리지 말고 쿠키 같은 것에 저장하는 내용이 뒤에서 나오나요? 안나온다면 어떤식으로 처리해야하나요? 서버에서 토큰을 내려보내줄때 쿠키에 담아서 내려보내주어야 하는건가요 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 혹시 강의대로 똑같이 했는데 오류가 떠서 질문 남깁니다ㅠㅠ 오류 java : cannot find symbol symbol : class Controller 무엇이 문제일까요ㅠ.. 따로 건든것도 없습니다 .
http,websocket의 비교라는 챕터에서는(12:07) 처음에 http 요청으로 연결을 맺는다라고 하셨는데 순수웹소켓-백엔드 강의에서는 (6:20) http 요청이 아니기 때문에 컨트롤러에서 안받고 핸들러에서 받는다고 하셨는데 중요한 개념인 것 같아서 어떻게 이해하면 될까요? 검색해보니까 처음에 연결은 http 요청에 get이 맞고 헤더에 웹소켓 요청이라는 정보가 있으므로 http 요청과는 구분된다라는 정보가 있는데 잘 모르겠어요~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니요 비슷한내용은 있으나 문제가 다릅니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] 오류메시지는 다음과 같으며 이미 1.8버젼으로 설정이 되어있는데 오류메시지가 출력됩니다.
보통 contoller service repository 이렇게 폴더 두고 그 안에서 여러개의 MemerConroller ChatController 이런식으로 나누는 것만 봐서 chat과 member 디렉토리를 나누고 그 안에서 다시 controller 디렉토리하고 만드는 방법을 처음 써보는데요~ 저는 강사님 방법이 더 좋은데 보통 어떻게 사용하나요? 특별히 강사님 처럼 디렉토리 나눈 이유가 있을까요 ??
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 구조를 보면 마지막 페이지로 갈 수록 모든 페이지 목록을 불러오는거 같은데 제가 이해한게 맞나요? pageLimitCalculator를 보면 page=4, pageSize=10, movablePage=3일때 pageLimitCalculaotr를 계산하면 61인데 현재 4페이지에 있다면 2번째 그룹인데 2번째 그룹의 데이터 목록들만 불러오는게 아니라 1번째 그룹데이터까지 포함해서 총 60개를 불러오는게 맞는거죠? 그렇다면 pageLimitCalculator 공식에서 (((page - 1) / movablePageCount) + 1) pageSize movablePageCount + 1; 마지막에 1을 더해주는데 왜 해주는 건가요? 다음 페이지에 데이터가 있나 없나를 확인하기 위해 1을 더하는건줄 알았는데 제가 생각한대로 마지막페이지로 갈수록 모든 데이터를 불러오는 구조라면 굳이 마지막에 1을 더할 필요가 있나 싶어서요 궁금합니다!
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요 다름이아니라 snowflake 알고리즘에서 의문점이 생겨서 질문 드립니다. 질문1) snowflake 알고리즘에서 synchronized를 활용하여 동시성 제어를 하는데, 만약 각 도메인 모듈마다 멀티 서버를 구상한다면 동시성 제어가 가능한가요? 질문2) 만약 안된다면, redis 와 같은 외부 미들웨어를 통해서 동시성제어를 하는 방식으로 해당 알고리즘을 수정해야 될까요?
@Bean public PasswordEncoder makePassword() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } 이거를 싱글톤 객체로 만들어주셨는데요 그런데 String encodedPassword = passwordEncoder.encode(memberSaveReqDto.getPassword()); 이부분을 static 으로 두고 참조변수를 사용해서 사용하는 것과 어떤 차이가 있나요? 찾아보니 전역변수는 static 이니까 메모리에 미리 올라가고 싱글톤은 사용할떄 올라가는 장점이 있다고 하는데 이 예시는 어차피 클래스 초기화될 때 생성되니까 그런 장점이 없을 것 같은데... 궁금합니다.
안녕하세요 궁금한게 있어 질문 남깁니다. 보통 데이터베이스 사용시 서비스 단에 @Transactional을 관습적으로 붙여왔는데, 서비스 로직을 작성하실때 @Transactional 애노테이션을 사용하시지 않은 건 비즈니스 로직이 너무 간단하기 때문에(트랜잭션 논리 단위로 묶을 필요없을 정도로) 생략하신거라고 이해하면 될까요? 답변 감사합니다
강사님 안녕하세요, 토큰 발급과 관련하여 문의드립니다. :) 카카오 토큰 발급 요청 시 공식 문서( POST & Content-Type: application/x-www-form-urlencoded;)에 따라 메시지 바디에 쿼리 파라미터 형식으로 데이터를 전달해야하는 것으로 이해했습니다. 1.1. 요청을 받는 카카오 입장에선 데이터가 쿼리 파라미터 형식이라면 아래 두 경우를 모두 처리할 수 있나요? - URL 쿼리 파라미터에 데이터를 포함해서 전달한 경우 - 메시지 바디에 쿼리 파라미터 형식으로 데이터를 전달한 경우 1.2. 1.1.이 맞다면, PostMapping으로 @SpringQueryMap KakaoTokenDto.Request request와 같이 정의한 이유가 무엇일지요? 바디가 아닌 URL 쿼리 파라미터에 데이터를 포함했을 때 이점이나 별도 차이가 있는지요? 아니면 단순 선택사항일지요? 2.1. 만약 메시지 바디에 쿼리 파라미터 형식으로 전달하고자 한다면, 토큰 발급에 성공하는 아래 방식 중 어떤 방식이 제일 적절한지와 의견 알 수 있을까요? @PostMapping(value = "/oauth/token", consumes = APPLICATION_FORM_URLENCODED_VALUE) KakaoTokenResponse requestKakaoToken(@RequestBody KakaoTokenRequest request); @PostMapping(value = "/oauth/token", consumes = APPLICATION_FORM_URLENCODED_VALUE) KakaoTokenResponse requestKakaoToken(@ModelAttribute KakaoTokenRequest request); @PostMapping(value = "/oauth/token", consumes = APPLICATION_FORM_URLENCODED_VALUE) KakaoTokenResponse requestKakaoToken(KakaoTokenRequest request); 2.2. 2.1.의 KakaoTokenResponse requestKakaoToken(KakaoTokenRequest request)의 경우, @RequestBody 애노테이션이 생략되어 처리되는게 맞을지요? 어떤 방식에 의해 처리되는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MemberForm은 MVC 패턴 중에 model에 속한다고 보는게 맞을까요?
주문 목록 입력 후 "Submit" 클릭 시 OrderStatus 관련 오류가 발생하는 것 같습니다. db에는 잘 저장되는 거 같은데 어떤 코드가 잘못된지 혼자 힘으로 찾지 못하겠어서 질문드립니다.. 코드 오류인것 같은데 찾아보려 노력했는데도 잘 보이지가 않네요 ㅎㅎ.. 아래는 구글 드라이브 링크 첨부드립니다. https://drive.google.com/file/d/15k5n02QDFcakFz3uhJg3k-4QOI2U2UGy/view?usp=sharing
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1. "Message Relay는 전송이 실패한 이벤트에 대해서만 Outbox Table에서 polling하면된다 " 그리고 생성 10초 이후 이벤트를 polling 하는 이유가 "중복 이벤트 발송을 방지하기 위해서"라고 말씀하셨는데 그 부분이 잘 이해가 안됩니다. 우선 첫번째로, 예를 들어 위와 같은 상황에서 1.Article Service는 API 요청을 받으면 2가지 동작을 한다. 2.Message Relay로 직접 이벤트를 전달하고, Outbox table에 이베트를 삽입한다. 위와 같이 이해를 했습니다. 그런데 이 2가지 동작 다음에 "Message Relay는 전송이 실패한 이벤트에 대해서만 Outbox Table에서 polling해서 중복된 이벤트를 처리하는 일이 없도록 한다"라는 동작을 어떻게 어떤 순서로 수행할 수 있는건가요?? 그리고 여기에 추가로 "생성 10초 이후 이벤트를 polling 해서 중복 이벤트 발송을 방지할 수 있다"라는 부분도 어떤 순서로 동작하기에 가능한 일인지 잘 모르겠습니다 제가 헷갈리는 부분은 이벤트를 직접 받기도 하고, 2.위 ppt 설명에서 2개의 애플리케이션이 있다면, 0~1번 샤드와 2~3번 샤드를 각각 polling한다.가 잘 이해가 되질 않습니다. 예를 들어 A 애플리케이션이 0~1번 샤드에 할당된 상태 B 애플리케이션이 2~3번 샤드에 할당된 상태일때, 만약, A 애플리케이션의 데이터가 유실됐다는 오류가 발생 -> Message Relay는 Outbox table에서 0~1번의 샤드만 polling한다. 이런 식으로 이해하면 옳게 이해한 것이 맞을까요? 매번 질문글에 상세한 답변 감사합니다 좋은 하루 되세요