inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

Group by push쿼리 사용중 오류 관련해서 질문드립니다.

미해결

카프카 완벽 가이드 - ksqlDB

안녕하세요 강사님 질문드립니다. group by 를 사용하여 조회할때 한번씩 group by 가 되지않고 조회되는경우가 있는데 이경우에는 리눅스 서버가 문제인건가요? 쿼리 날리면 결과가 조금 늦게 뜨긴합니다.

  • kafka
  • 데이터-엔지니어링
  • ksqldb
JoyNGain 댓글 1 좋아요 0 조회수 180

로그인 페이지에 접속 하기만 해도 JSSEISONID 값을 가집니다

미해결

스프링 시큐리티

Cookie 값을 삭제 하며 여러 동작을 해보던 도중, 로그인을 하기 전부터 JSSESSIONID 값이 cookie 에 들어가 있는 것을 확인하였습니다. 처음에는 오류인가 싶어 값을 삭제하고 로그인하였더니, 로그인이 동작하지 않고 그냥 페이지가 reload 된 다음 임의의 JSSESSIONID 값을 가져왔습니다. 왜 reload 할 때마다 JSSESSIONID 값을 가져오는 걸까요? 그리고 왜 JSSESSIONID 값 없이는 로그인 동작 자체가 안 되는 걸까요?

  • java
  • spring-boot
  • spring-security
정재빈 댓글 2 좋아요 0 조회수 503

Querydsl Q클래스 생성 오류

해결됨

실전! Querydsl

plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral () } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt: $ { dependencyManagement.importedProperties [ 'querydsl.version' ]} :jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" testImplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' } tasks. named ( 'test' ) { useJUnitPlatform () } clean { delete file ( 'src/main/generated' ) } tasks. named ( 'bootBuildImage' ) { builder = 'paketobuildpacks/builder-jammy-base:latest' } tasks. named ( 'test' ) { useJUnitPlatform () } //querydsl 세팅 시 def querydslDir = " $buildDir /generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java. srcDir querydslDir } configurations { querydsl. extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations. querydsl } 인프런에서 질문 & 답변을 보고 gradle 설정했는데도 오류가 계속 발생됩니다. Build and run using : Gradle 로 변경하면 발생 되는 오류 입니다. 오류 : Attempt to recreate a file for type study.querydsl.entity.QHello

  • java
  • jpa
Jun 댓글 1 좋아요 0 조회수 3103

Streams테스트중 질문드립니다.

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

StreamsFilter를 실행시키는 중 강사님 화면과 다른 게 있어서 질문드립니다. 강사님께서는 실행시켜도 콘솔에 로그가 출력되지 않는데 저는 실행시키면 로그가 계속 출력됩니다. 혹시 잘못한 건지 궁금해서 질문드립니다.

  • kafka
  • 데이터-엔지니어링
ckaqudwhgtlrdkTl 댓글 3 좋아요 0 조회수 380

pd.get_dummies(train[cols])와 (train, columns=cols) 차이가 궁금합니다.

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

원핫 인코딩 코드에서 괄호 안에 [cols]를 쓸 때와 columns=cols를 쓸 때의 차이가 궁금합니다. 3-4 Feature engineering에서와 3-6 Regression에서 작성법이 달라서요. 3-6 Regression에서는 train[cols]로 썼더니 에러가 나네요ㅠ # 3-4 Feature engineering c_train[col] = le.fit_transform(c_train[col]) c_test[col] = le.transform(c_test[col]) # 3-6 Regression train = pd.get_dummies(train, columns=cols) test = pd.get_dummies(test, columns=cols)

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
kimx2725 댓글 1 좋아요 0 조회수 446

kafka-connect-web관련 문의드립니다.

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

안녕하세요 강의중 Kafka-connect-web에 대해 말씀하셔서 실습차 아래와 같은 구성으로 세팅후 확인중 에러가 있어 문의드립니다. 환경설정 zookeeper, Kafka, Kafka Connect 서버 : 10.0.3.16, 10.0.3.17, 10.0.3.18 Kafka-connect-web 서버 : 10.0.1.9 Kafka-connect-web은 위의 서버에 도커 컨테이너로 생성하였고 생성명령어는 아래와 같이 했습니다. docker run -d -p 8080:8080 --name kafka-connect-web -e "VUE_APP_CONNECT_SERVERS= http://10.0.3.16:8083,http://10.0.3.17:8083,http://10.0.3.18:8083 " officialkakao/kafka-connect-web:latest 문제 내용 container 안에서 curl 10.0.3.16:8083/connector-plugins로 확인시 값을 받아와서 네트워크 문제는 없는것 같은데 Kafka-connect-web에서 Connector class 값을 받을려고 실행하는 axios가 timeout이 나고, container 안에서 tcpdump를 떠도 패킷이 보이지 않습니다. Kafka-connect-web에 추가적인 설정이 필요한지 문의드립니다.

  • kafka
  • 데이터-엔지니어링
장종인 댓글 3 좋아요 0 조회수 645

강의보고 토이프로젝트로 재고감소 낙관적락 기법 적용 질문

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

안녕하세요 강사님 강의를 보고 토이 프로젝트에서 주문 시 재고 감소 및 메뉴 주문량 증가 로직에서 낙관적락 기법을 적용해 보았는데요, 강의에서 해주신 내용 그대로 파사드 패턴 까지 적용을 해보면서 시도했는데 무한 루프가 돌았습니다. hikariCP pool을 40으로 설정해주니 그제서야 해결이 되었는데요, 강의에선 네임드락에서 커넥션풀을 지정해주었는데요 저는 낙관적락인데도 해당 설정을 해서 해결된 이유가 있을까요? @Service @RequiredArgsConstructor public class OrderService { @Transactional public Order orderWithOptimisticLock(Long memberId, LocalDateTime now) { Cart cart = cartRepository.findByMember(memberId); List<CartItem> cartItems = cart.getCartItems(); cartItems.stream() .map(CartItem::getMenu) .forEach(menu -> { decreaseStockWithOptimisticLock(menu.getId(), 1); increaseMenuOrderCountWithOptimisticLock(menu.getId(), 1); }); Money money = calculator.calculateMenus(cart.getMember(), cart.convertToMenus()); Order order = Order.createOrder(cart, money, now); return orderRepository.save(order); } public void decreaseStockWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.decrease(quantity); } public void increaseMenuOrderCountWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.increaseOrderCount(quantity); } } ``` @Component @RequiredArgsConstructor public class OptimisticLockStockFacade { private final OrderService orderService; public Order order(Long memberId, LocalDateTime localDateTime) throws InterruptedException { while (true) { try { return orderService.orderWithOptimisticLock(memberId, localDateTime); } catch (Exception e) { Thread.sleep(50); } } } } ``` public interface JpaMenuRepository extends JpaRepository<Menu, Long> { @NotNull @Lock(LockModeType.OPTIMISTIC) @Query("select m from Menu m where m.id = :id") Optional<Menu> findByIdForOptimisticLock(@NotNull @Param("id") Long id); }

  • java
  • spring
  • 동시성
하윤 댓글 2 좋아요 0 조회수 647

Array.sort 사용 구분

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

앞 문제에서 Collection.sort를 쓰면 문제에서 효율적이지 못하다는 댓글을 봐서 처음부터 Array.sort를 해서 정렬하는 방법을 생각을 못했는데 어떤 문제에선 사용하고 사용하지말고 구분이잘 안되는데 이럴땐 어떻게 하나요...

  • java
  • 코딩-테스트
이주용 댓글 1 좋아요 0 조회수 386

컨슈머 랙 모니터링 질문

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

안녕하세요. 강의 잘 듣고 있습니다! 컨슈머 랙 모니터링 부분 강의를 듣고 있는데 의문이 생겨서 질문 드립니다. 컨슈머 랙을 모니터링하다가 사용량이 많아지게 되면 데이터 처리를 위해 컨슈머 개수와 파티션 개수를 늘려 병렬 처리량을 늘리는 방법이 좋다라고 말씀 하셨는데요. 이전 강의에서는 파티션 수를 늘리면 다시 줄일 수 없기 때문에 처음에 잘 선정해야 한다라고 들어서 이 부분이 약간 헷갈리는 거 같습니다. 많은 데이터량을 처리하려면 파티션 수를 늘리는 방법말고는 없을 거 같은데 설날같이 일시적인 트래픽이 증가하는 날을 위해 평소에도 과도한 파티션 수로 운영하는게 더 좋을까라는 의문도 같이 생기네요. 혹시 현업에서는 어떠한 방식으로 처리하고 있으신가요? 좋은 강의 감사합니다.

  • kafka
  • 데이터-엔지니어링
황영빈 댓글 3 좋아요 0 조회수 424

인코딩과 컬럼선택기준

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

인코딩을 할때 선생님이 어쩔때는 원핫인코딩을 하시고 어쩔때는 레이블인코딩을 하시던데 그 인코딩을 정하시는 기준을 잘 모르겠습니다! 인코딩을 정하실때 그 경우에 대해서 자세히 알려주시면 감사하겠습니다 그리고 인코딩을 할때 컬럼도 몇개 정하셔서 하시던데 그 컬럼고르는 기준도 잘 모르겠습니다 그 기준에 대해서도 선택하는 방법을 알려주시면 감사하겠습니다 ㅠㅠ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jms717958 댓글 1 좋아요 0 조회수 373

여러 컨슈머 그룹에서 데이터 소비

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

안녕하세요. 수업 잘 듣고 있습니다! 컨슈머 관련해서 궁금한 점이 생겨 질문드립니다. 제가 지금까지 이해한 내용으로는 하나의 토픽에 대해서 이벤트를 발생하면 key 값을 통해 파티션으로 분배되는 걸로 이해하고 있습니다. 그리고 하나의 토픽에 대해서 여러 컨슈머 그룹이 운영될 수 있고 별도 offset으로 관리되어 각 컨슈머 그룹에서는 이벤트에 대해서 원하는 용도로 처리될 수 있다고 하셨습니다. 이부분에서 궁금한 점이 생겼는데요. 하나의 이벤트에 대해서는 한개의 파티션에 하나의 레코드만 생성되는데, 여러 컨슈머 그룹에서 해당 이벤트를 다 가져가는 경우는 발생할 수 없는 거 같아서 헷갈리는 거 같습니다. 이벤트 -> 토픽에서 특정 파티션 선정 -> 파티션에 레코드 등록 -> 컨슈머 이런 형태로 진행되면 한개의 이벤트는 어떻게 여러 컨슈머 그룹에서 독립적으로 처리할 수 있지라는 의문이 생기게 되었습니다. 혹시 하나의 이벤트에 대해서 레코드가 여러개 생성될 수 있는 걸까요?? 아니면 하나의 컨슈머 그룹에서는 하나의 파티션만 할당될 수 잇지만 여러 컨슈머 그룹인 경우에는 하나의 파티션에 대해서 그룹 당 하나의 컨슈머가 할당이 가능한것일까요??

  • kafka
  • 데이터-엔지니어링
황영빈 댓글 2 좋아요 0 조회수 368

작업형2에서 언제는 분류모델을 써야하고 언제는 회귀모델을 써야할까요?!

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

보통 작업형2에서는 예측값을 물어보는 문제가 나오던데요. 문제가 나올때 어느문제는 분류모델을, 어느문제는 회귀모델을 사용해야하는지 궁금합니다. 지금까지 강의+기출문제를 보면서는 분류/회귀를 결정하는 부분이 평가 모델을 통해 진행된다는 느낌을 받았는데요. 1) roc_auc_score, accuracy_score 이 평가모델로 쓰일 경우, 분류형 모델 사용(Classifier) 2) rmse, mean_squared_error 이 평가모델로 쓰일 경우, 회귀모델 사용(Regressor) 이렇게 생각하면서 작업형2를 접근하는게 맞는지 궁금합니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
hello4298 댓글 1 좋아요 0 조회수 385

m2 폴더 질문

미해결

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

현재 maven이 아닌 gradle로 빌드 환경을 구성하고 있습니다. m2/repository/org 폴더는 존재하지만 그 안에 mariaDB가 없습니다. build.gradle에서 mariadb-client를 추가해준다고 해서 제 PC 환경에 설치되는 것이 아닌것 같은데 어떻게 해야 할까요..

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
마카롱2개 댓글 2 좋아요 0 조회수 904

flush() 와 clear()

해결됨

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 스프링 데이터 JPA 가 지원하는 save를 호출하면 flush()가 나가는건가요 아니면 save를 하고 bulkAgePlus()를 호출하면서 bulkAgePlus() 에 있는 JQPL이 실행되서 flush() 가 나가는건가요 ? bulkAgePlus()를 실행하면 JPQL 실행이되고, JPQL 이 실행이 되면 flush() 가 호출이 되는데 이때 SQL쿼리문이 DB에 전송이대서 DB에는 업데이트가 되어있지만 영속성 컨텍스트는 업데이트가 안되기 때문에 clear()를 해주는게 맞는건가요 ?

  • java
  • spring
  • spring-boot
  • jpa
최재영 댓글 1 좋아요 0 조회수 483

질문

미해결

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

@requestHeader 에 first-request를 지우면 filter 가 안되니 분기가 안되려나요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
황인규 댓글 1 좋아요 0 조회수 376

인증서버를 겸하는 api gateway로 구성하려면

해결됨

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

안녕하세요. 강의 초반부 수강 중인데 궁금한 게 생겨서 질문드립니다. Spring Security, JWT, OAuth 등을 사용한 인증서버를 api gateway가 겸하게 하고자 하는데요, UserMicroService의 내용을 Spring Cloud Gateway 프로젝트에서 진행하면 되는 걸까요? 해당 강의를 참고해서 api gateway를 사용한 프로젝트를 Aws에 올릴 예정이다보니 비용에 대해 고려하게 되는데요, 해당 강의에서 api gateway와 관련해서 사용하게 될 서버 개수가 궁금합니다. 섹션7 까지 강의대로 하면 마이크로서비스나 DB는 제외하고, Spring Cloud Gateway와 관련한 서버만 총 3개 사용하게 되는 건가요? (Eureka, Spring Cloud Gateway, Spring Config Cloud Server)

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
da77777 댓글 1 좋아요 0 조회수 988

CRUD에 따른 ResponseDto를 보내는 유형 및 ResponseDto 구성 방식에 대한 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하십니까 영한님. 영한님 덕분에 JAVA Spring 기반 백엔드 개발의 시작을 할 수 있었고, 이제는 5개월 차 스타트업 백엔드 개발자로써 커리어를 시작하게 되었습니다. 현업에 와서는 오히려 취준생 때 보다 더 많은 고민을 하게 되느데요, 질문 1. 그중 최근에 CRUD의 각 상황별 API 응답을 어떻게 보내는게 적절할지, 질문 2. 그리고 ResponseDto를 어떻게 구성하는것이 적절할지에 대한 고민을 팀장님과 함께 하고있어서, 영한님의 생각을 여쭙고자 질문글을 올리게 되었습니다. 답변 해주시면 정말 감사할 거 같습니다! Q1. 생성, 조회 , 수정, 삭제 API의 응답을 각각 어떻게 보내시는지 여쭤보고 싶습니다. 가장 먼저 조회의 경우는 말 그대로 path의 Entity 및 관련된 Entity 정보를 조합하여 응답 DTO로 변환하여 보내고 있습니다. 그런데 나머지 Write Operation에 대한 응답을 어디까지 보내야 하냐가 이슈 입니다. 예를들면 엔티티의 생성의 경우 엔티티의 응답 DTO를 보내면 - 프론트에서 별도의 조회 API 호출 없이 바로 프론트가 화면에 뿌려줄 수 있으니깐 저는 생성의 경우에도 조회와 마찬가지로 Entity의 정보를 조합하여 응답 DTO로 변환하여 보내고 있었습니다. 그런데 이러한 부분이 Command Query Sperate 원칙에 어긋나는것 같아, 영한님께서는 혹시 생성한 Entity의 Key만 보내시는지, 아니면 Entity의 정보를 DTO로 변환하여 보내시는지 궁금합니다. 만약 Entity의 Id만 보내신다면 이후에 별도로 조회API를 호출해야 하고 그 또한 비용일텐데 이러한 부분은 어떻게 하시는지 여쭤보고 싶습니다. 이제 수정 API인데요, 제가 다룬 비즈니스 로직의 경우 수정 비즈니스 로직이 다양하고 , 각 비즈니스 로직의 경우 다뤄지는 Entity의 종류가 다른 경우였습니다. (중심 Entity는 동일하지만, 연관된 Entity를 누구까지 건드리냐의 차이) 그래서 하나의 통일된 응답으로 보내기 모호한 점이 첫 번째 이유이고, 애초에 수정 후에 프론트 화면에서 그 엔티티의 정보를 보여줄 필요가 없어서 라는 두번째 이유에 의해서 에초에 엔티티의 Id값도 보내지 않고 있었는데요, 이 수정 API의 응답을 영한님은 어떻게 진행하지는지 그 이유가 궁금합니다. 마지막으로 삭제의 경우는 정말, 프론트에게 보낼 응답이 없어도 되는 경우 라고 생각했는데요, 팀장님의 의견은 만약에 나중에 삭제한 Entity를 복구하는 요구사항이 추가되는것을 고려하여 Id 정도는 넘기자는 의견을 내어주셨습니다. 마찬가지로 삭제의 경우도 어떤식으로 수행하시는지 그 이유가 궁금합니다. Q3. 마지막으로 Entity의 ResponseDto의 필드를 어떤식으로 구성하시는지 궁금합니다 예를들면 저의 경우는 API는 프론트와 서버 간의 스펙이라고 생각하고, Entity의 단건조회의 경우는 단건 조회용 ResponseDto를, 전체조회의 경우는 전체 조회용 SummaryResponseDto를 별도로 만들어서 사용하고 있었습니다. 저희 팀장님 께서는 프론트쪽도 일을 해오시다가 , 백엔드쪽 분야로 전향하신 케이스 인데요, 그렇다 보니 어떻게 해야 프론트의 생산성이 올라가는지를 고려하시는 분이셨고, 팀장님의 생각은 서버에서 넘겨주는 응답에 일관성이 있어야 그 응답을 사용하는 프론트 측도 학습이 되고 놓치는 부분 없이 생산성이 올라간다 는 의견이셨습니다. 그래서 Entity별로 당장 사용하지 않더라도 가능한 모든 필드를 담은 ResponseDto를 하나만 만들고, 해당 ResponseEntity의 조합으로 각 API별 응답 Dto를 만들어서 사용하면 , 프론트 측 에서는 일관성 있는 응답값을 사용할 수 있다는 의견이셨습니다. 물론 이 방법이 네트워크 패킷의 양을 쓸데없이 증가시킨다는 것을 알고 계시면서도, 생산성에 큰 영향을 미치는 부분이라고 생각하셨습니다. 예를들어 다음과 같이 각 Entity의 응답 Dto의 조합별로 API의 ResponseDto를 만들 수 있습니다. ResponseDto{ UserDto{ id : 1, name : “aaa” … // User엔티티의 거의 모든 필드 } ItemDto{ id : 2, name : “bbb”, … // Item엔티티의 거의 모든 필드 } } 저는 이러한 부분에 대해 생각해 본 적이 없이, 그냥 제가 “해당 API를 호출하는 화면에서 필요한 정보들만을 담아 (혹은 여러 화면에서 쓰인다면 여러개를 고려) ResponseDto를 각각 만들어서” 넘겼는데요 영한님께서는 이러한 ResponseDto를 구성하는 부분에 있어서 상황별로 필드를 재구성 하여 ResponseDto를 정의하여 사용하시는 편 인지 (SummaryResponseDto 등의 별도 Dto에 사용될 Entity의 필드들을 풀어서 정의하시는지) 아니면 생산성을 고려하여 각 Entity별 Dto를 만들고, 이들을 조합하여 ReponseDto를 정의하시는 편 이신지 , 혹은 다른 규칙이 있으신지 궁금합니다. 물론 그렇다고 , 팀장님의 의견에서 전체조회시 사용하는 DTO와 단건조회시 사용하는 DTO가 동일하더라도, 전체조회 후 단건조회를 할때 단건조회 API를 호출하지 말고 기존 Front가 가지고 있는 값을 쓰지는 말자는 의견 이십니다 (단건조회API는 별도로 호출해야 한다) 그저 핵심은 프론트가 다루는 ResponseDto의 일관성을 위해서 입니다 (결론은 생산성을 위해) 긴글 읽어주셔서 감사합니다. 항상 건강하셨으면 좋겠고, 다음 강의들도 손꼽아 기다리고 있습니다!

  • java
  • spring
  • spring-boot
  • jpa
요니 댓글 3 좋아요 0 조회수 1442

커스텀 elasticsearch sink connector를 만들었는데 class를 찾지 못하고 있어요

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

{ "error_code": 500, "message": "Error trying to forward REST request: Failed to find any class that implements Connector and which name matches com.example.connector.kafka.ElasticsearchSinkConnector, available connectors are: PluginDesc{klass=class com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector, name='com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector', version='0.0.0.0', encodedVersion=0.0.0.0, type=source, typeName='source', location='file:/data01/connectors/spooldir_source/'}, PluginDesc{klass=class com.github.jcustenborder.kafka.connect.spooldir.SpoolDirJsonSourceConnector, name='com.github.jcustenborder.kafka.connect.spooldir.SpoolDirJsonSourceConnector', version='0.0.0.0', encodedVersion=0.0.0.0, type=source, typeName='source', location='file:/data01/connectors/spooldir_source/'}, PluginDesc{klass=class com.github.jcustenborder.kafka.connect.spooldir.SpoolDirLineDelimitedSourceConnector, name='com.github.jcustenborder.kafka.connect.spooldir.SpoolDirLineDelimitedSourceConnector', version='0.0.0.0', encodedVersion=0.0.0.0, type=source, typeName='source', location='file:/data01/connectors/spooldir_source/'}, PluginDesc{klass=class com.github.jcustenborder.kafka.connect.spooldir.SpoolDirSchemaLessJsonSourceConnector, name='com.github.jcustenborder.kafka.connect.spooldir.SpoolDirSchemaLessJsonSourceConnector', version='0.0.0.0', encodedVersion=0.0.0.0, type=source, typeName='source', location='file:/data01/connectors/spooldir_source/'}, PluginDesc{klass=class com.github.jcustenborder.kafka.connect.spooldir.elf.SpoolDirELFSourceConnector, name='com.github.jcustenborder.kafka.connect.spooldir.elf.SpoolDirELFSourceConnector', version='0.0.0.0', encodedVersion=0.0.0.0, type=source, typeName='source', location='file:/data01/connectors/spooldir_source/'}, PluginDesc{klass=class io.confluent.connect.elasticsearch.ElasticsearchSinkConnector, name='io.confluent.connect.elasticsearch.ElasticsearchSinkConnector', version='11.0.0', encodedVersion=11.0.0, type=sink, typeName='sink', location='file:/data01/connectors/elasticsearch_sink/'}, PluginDesc{klass=class io.debezium.connector.sqlserver.SqlServerConnector, name='io.debezium.connector.sqlserver.SqlServerConnector', version='1.7.1.Final', encodedVersion=1.7.1.Final, type=source, typeName='source', location='file:/data01/connectors/mssql_source/'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='2.8.2', encodedVersion=2.8.2, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='2.8.2', encodedVersion=2.8.2, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='1', encodedVersion=1, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockConnector, name='org.apache.kafka.connect.tools.MockConnector', version='2.8.2', encodedVersion=2.8.2, type=connector, typeName='connector', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSinkConnector, name='org.apache.kafka.connect.tools.MockSinkConnector', version='2.8.2', encodedVersion=2.8.2, type=sink, typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSourceConnector, name='org.apache.kafka.connect.tools.MockSourceConnector', version='2.8.2', encodedVersion=2.8.2, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.SchemaSourceConnector, name='org.apache.kafka.connect.tools.SchemaSourceConnector', version='2.8.2', encodedVersion=2.8.2, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSinkConnector, name='org.apache.kafka.connect.tools.VerifiableSinkConnector', version='2.8.2', encodedVersion=2.8.2, type=source, typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSourceConnector, name='org.apache.kafka.connect.tools.VerifiableSourceConnector', version='2.8.2', encodedVersion=2.8.2, type=source, typeName='source', location='classpath'}" } connector 등록 api를 날리면 이런 에러가 뜹니다. 그런데 /connector-plugins request를 날리면 plugin으로 인식하고 있어요. SinkConnector를 상속한 클래스의 path도 맞는데 왜 동작하지 않는 건지 모르겠어요 [ { "class": "com.example.connector.kafka.ElasticsearchSinkConnector", "type": "sink", "version": "1.0" }, { "class": "com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector", "type": "source", "version": "0.0.0.0" }, { "class": "com.github.jcustenborder.kafka.connect.spooldir.SpoolDirJsonSourceConnector", "type": "source", "version": "0.0.0.0" }, { "class": "com.github.jcustenborder.kafka.connect.spooldir.SpoolDirLineDelimitedSourceConnector", "type": "source", "version": "0.0.0.0" }, { "class": "com.github.jcustenborder.kafka.connect.spooldir.SpoolDirSchemaLessJsonSourceConnector", "type": "source", "version": "0.0.0.0" }, { "class": "com.github.jcustenborder.kafka.connect.spooldir.elf.SpoolDirELFSourceConnector", "type": "source", "version": "0.0.0.0" }, { "class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector", "type": "sink", "version": "11.0.0" }, { "class": "io.debezium.connector.sqlserver.SqlServerConnector", "type": "source", "version": "1.8.1.Final" }, { "class": "org.apache.kafka.connect.file.FileStreamSinkConnector", "type": "sink", "version": "2.8.2" }, { "class": "org.apache.kafka.connect.file.FileStreamSourceConnector", "type": "source", "version": "2.8.2" }, { "class": "org.apache.kafka.connect.mirror.MirrorCheckpointConnector", "type": "source", "version": "1" }, { "class": "org.apache.kafka.connect.mirror.MirrorHeartbeatConnector", "type": "source", "version": "1" }, { "class": "org.apache.kafka.connect.mirror.MirrorSourceConnector", "type": "source", "version": "1" } ] 로그를 봐도 커넥트 로그만 나오고 등록한 커넥터의 로그는 나오지 않는 것 같은데 혹시 카프카와 연결해서 커넥터를 ide에서 디버깅할 수 있는 방법이 있을까요?

  • kafka
  • 데이터-엔지니어링
이하정 댓글 2 좋아요 0 조회수 464

강의 소제목에는 비대칭키를 활용한 암호화라고 되어있는데

미해결

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

apiEncryptionKey.jks (개인키)와 이에 파생된 public.key (공개키)를 생성한 것 까지는 이해가 되었습니다. 강의중 encrypt/decrypt 를 하는 과정에서 모두 apiEncryptionKey.jks (개인키)를 사용한 대칭키 방식을 사용한 것 같은데 비대칭키 전략을 사용하는 부분이 있나요? 아니면 비대칭키를 추후에 활용할 수 있도록 파생키를 생성하는 방법을 알려주신건가요? java key store를 통해 구성정보의 암/복호화에 대칭키 방식을 사용한건지 비대칭키 방식을 사용한건지 궁금합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
imnoooy 댓글 1 좋아요 1 조회수 426

인기 태그

인프런 TOP Writers

주간 인기글