- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 자바 클라이언트에서 메세지 전송시 아래와 같은 오류가 발생합니다. 저는 m1 유저라 UTM으로 가상환경 구성하였고, 터미널에서 테스트시에는 이전 수업내용은 잘 작동하였는데, 자바클라이언트에서 오류가 발생하네요 어떻게 해결하면 좋을까요?
각 마이크로서비스 내에서도 application.yml을 두고, config service으로 부터 읽어오는 설정파일을 지정할 수 있다는 부분을 강의를 통해 배웠습니다. 1) 제가 궁금한 부분은 애플리케이션 내부 설정파일과 config service가 읽어오는 설정파일에 적는 정보는 어떤 기준으로 나뉘나요? 즉, 어떠한 정보를 애플리케이션 내부 설정파일에 두며, 어떤한 정보는 애플리케이션 내부 보다는 config-service로 부터 읽어들이는 설정파일에 정보를 두게되는 기준이 있으실까요? 2) 또 다른 궁금점은 꼭 필요한 설정을 제외하고는 대부분의 설정 정보를 config-service로부터 읽어오는 설정파일에 넣어놔도 괜찮나요?? 감사합니다.
처음에 강의를 보면서 주키퍼와 브로커를 띄우면 문제없이 실행되는데, 다음날 다시 실행하려고 하면 kafka.common.InconsistentClusterIdException: The Cluster ID 8Q9ArKFaQjG9sOAyuBI3DQ doesn't match stored clusterId Some(golWFU1QQCWt7dC6LX9zhw) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong. 위와 같은 메시지가 뜨면서 브로커가 실행을 못합니다. data 디렉토리에 생성된 meta.properties를 삭제하고 다시 실행하면 문제없이 동작하는데, 번거롭기도 하고, 실제로도 이렇게 사용하는게 맞는건가 하는 의문도 드네요. 해당 부분에 대해 조언 좀 부탁드리겠습니다. :)
도커 컴포즈 재시작시 consumer 서버 실행시킬때마다 가끔 partition이 할당되지 않는 경우가 생겨 테스트코드가 실패하는 경우가 생기는데요 해당 에러를 consumer서버 재시작을 통해 해결하고 있습니다. 할당을 받지 못하면 어떤식으로 해결하는 것이 좋은지 자문을 구하고 싶습니다.
안녕하세요! 설명을 너무 잘 해주셔서 유익하게 잘 듣고 있습니다 ㅎㅎ Wakeup을 이용하여 Consumer를 효과적으로 종료하기 부분에서 질문이 있는데요, 프로그램이 종료되는 시점에 새로운 쓰레드를 만들어 실행하는 함수인 addShutdownHook() 안에 mainThread.join() 부분이 잘 이해되지 않습니다. 새로운 스레드가 ConsumerNetworkClient의 wakeup을 부르고 메인 스레드가 종료될 때까지 기다려야 해서 mainThread.join()을 부른다고 하셨는데, 메인 스레드의 종료 절차(메모리 정리 등?)를 마칠 때까지 기다린다는 의미가 맞을까요? addShutdownHook() 함수가 프로그램이 종료될때 실행되는 함수인데 그 안에 종료를 기다리는 함수가 또 들어있어 헷갈렸습니다. 그리고 만약 mainThread.join()이 메인 스레드가 종료를 마칠 때까지 기다리는 게 맞다면, mainThead.join()을 먼저 부르고 kafkaConsumer.wakeup()을 이후에 호출해도 문제가 없는지도 궁금합니다~
안녕하세요. where 조건을 동적으로 생성해주는 부분에 대해서는 충분히 이해가 되었습니다. 그런데 혹시 특정 condition 값에 따라 join을 해줘야하는 테이블이 다른 경우라면 어떻게 처리되어야 할지 모르겠어서 글을 남기게 되었습니다. condition조건에 teamName이 있을 때만 team을 조인해주고 싶은데 join 구문을 동적으로 처리할 수 있는 좋은 방법이 어떤 것인지 질문드립니다. 😭 감사합니다.
안녕하세요 zookeeper 실행 완료하고 이제 마지막으로 Kafka 를 실행하면 완료 되는데요. (이미지 안보이시면 ㅠ,ㅠ https://cdn.inflearn.com/public/files/posts/769307aa-6074-40cd-9d9d-94ffb82f7508/cccccc.PNG ) 기본 default port 가 9092 설정된 상태에서 실행하면 이미 사용된 포트라고 에러가 발생 됩니다. 혹시나 해서 9093 으로 설정해도 문제가 발생되네요... 참고로 꼭!! 9092 포트로 설정하고 프로세스 올리고 싶습니다 ㅠ,.ㅠ 그래서 혹시 9092 포트가 사용되고 있나 netstat -ano | findstr :9093 명령어 통해 확인을 해도 사용하는 포트가 없다고 나오는데요... 무슨 문제일까요?... 참고로 OS는 윈도우 입니다.
안녕하세요. 좋은 강의 항상 감사드립니다. Coupon 도메인 중복 관련해서 질문이 있습니다. consume 모듈을 새로 생성하면서 Coupon 도메인을 api 모듈에서 복붙을 하셨는데요. gradle 멀티 모듈을 만들 때 부모/자식 관계로 만들면 Coupon 도메인을 중복되지 않게 사용할 수 있을 것 같은데 강의에서는 시간상 패스한 것인가요?
안녕하세요, 좋은 강의 올려주셔서 잘 배우고 있습니다 :) 강의에서 Kafka 도입 이유에 대한 궁금증이 생겨 질문 드립니다. 'Redis를 활용하여 문제 해결하기' - '문제점' 강의에서 해당 쿠폰 API에 요청이 몰리면 DB 서버에 부하가 갈 수 있다고 설명해주셨는데요. 그 해결방법으로 Kafka를 사용하셨고 API에서 직접 쿠폰을 생성할 때와 다르게 처리량을 조절해서 부하를 줄일 수 있다고 하였습니다. 이 내용 중 "처리량을 조절한다"는 의미는 어떻게 이해하면 좋을까요? 컨슈머 애플리케이션에서 처리량을 조절하는 로직을 추가하여 RDB 부하를 분산시키는 걸까요? 혹은 카프카에서 그러한 기능을 지원하는 걸까요? 혹은 마지막 강의에 있는 에러를 발생했을 때, 백업 데이터를 통해 실패 처리를 하는 경우에 대한 이야기일까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 수정, 삭제 벌크 연산의 6:20 부분에서 update쿼리로 인한 영속성컨텍스트 문제를 설명해주셨는데요. 전 강의에서 em.flush()실행되는 조건들을 설명해주실 때, 직접 호출 시 트랜잭션 커밋 시 JPQL쿼리 실행 시 em.flush()가 실행된다고 설명해주신 것으로 기억하고 있습니다. querydsl도 결국 JPQL기반으로 작동된다고 알고 있는데, querydsl을 통한 select쿼리 실행을 하면 자동으로 em.flush()가 실행되지 않고, 직접 해주어야 하는 메커니즘이 궁금합니다!
안녕하세요, build.gradle의 빌드 실패가 나서 문의드립니다. JDK 버전은 다음과 같이 17.0.6입니다. 그리고 인텔리제이 설정은 다음과 같습니다. java 컴파일러 설정 2. 빌드 도구 설정 3. 프로젝트 설정 마지막으로 처음 프로젝트를 다운로드 받았던 설정은 다음과 같습니다.(spring boot 3.0.7 버전 사용) 처음 build.gradle을 실행할 때부터 에러 로그 하나도 없이 그냥 빌드 실패했다는 에러가 뜹니다. 컴퓨터를 여러번 껐다가 켜봐도 여전히 같은 에러가 뜹니다. 인텔리제이와 스프링이 완전 처음이라서 이 에러를 어떻게 해결해야 하는지 모르겠습니다. 커뮤니티의 다른 글들을 참고해봐도 딱히 도움이 되지는 않는 것 같습니다. 도와주시면 너무 감사하겠습니다.
안녕하세요! 질문 좀 드리려고 합니다 엔티티 매니저 프록시는 프록시를 싱글톤으로 주입해서 동시성 문제를 해결하고 실제 엔티티 매니저 인스턴스를 ThreadLocal로 관리하는 역할 정도로 생각해도 괜찮을까요? 추가적으로 실제 엔티티 매니저는 @Transactional을 사용하면 JpaTransactionManager에서 생성이 되는데 @Transactional을 사용하지 않으면 처음 엔티티 매니저를 사용할 때 생성이 되나요?
안녕하세요. 큰돌님 강의 잘 보고있습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int[][] board; static boolean[][] visited; static int[] dy = {-1, 0, 1, 0}; static int[] dx = {0, 1, 0, -1}; static int yLen; static int xLen; static int cnt; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); while (n-- > 0) { int[] given = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); if (given[2] == 1) { sb.append(1).append(System.lineSeparator()); continue; } board = new int[given[0]][given[1]]; visited = new boolean[given[0]][given[1]]; yLen = given[0]; xLen = given[1]; for (int i = 0; i < given[2]; i++) { String[] numStr = br.readLine().split(" "); int y = Integer.parseInt(numStr[0]); int x = Integer.parseInt(numStr[1]); board[y][x] = 1; } for (int i = 0; i < yLen; i++) { for (int j = 0; j < xLen; j++) { if (!visited[i][j] && board[i][j] == 1) { dfs(i, j); cnt++; } } } sb.append(cnt).append(System.lineSeparator()); } System.out.print(sb.substring(0, sb.length() - 1)); } public static void dfs(int y, int x) { visited[y][x] = true; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= yLen || nx < 0 || nx >= xLen) continue; if (visited[ny][nx] || board[ny][nx] == 0) continue; dfs(ny, nx); } } } 위 코드를 실행하면 12%, ArrayIndexOutOfBounds가 발생하는데 어떤 부분인지 알 수 있을까요?