inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

프로듀서를 통해 카프카 클러스터에 레코드를 보낼 때 항상 1개의 배치로만 tcp 통신이 이루어지나요?

미해결

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

카프카 프로듀서 소개 강의를 보다 질문드립니다. 프로듀서에서 레코드를 send하면 Accumulator에서 배치로 묶는 과정을 한다고 하셨는데요. 실제 Sender가 발생하는 시점에 프로듀서 애플리케이션에서 항상 1개의 배치 단위로 tcp 통신이 발생하나요? 아니면 내부적으로 여러개의 배치를 한번의 tcp 통신으로 통신할까요?

  • kafka
  • 데이터-엔지니어링
화이팅 댓글 1 좋아요 0 조회수 268

안녕하세요 선생님 질문이 있습니다

해결됨

실습으로 배우는 선착순 이벤트 시스템

먼저 강의 잘 들었습니다. 취준 중인데도 이해가 잘 돼서 좋습니다! 다름이 아니라 동시성 제어를 할 때 redis, kafka로도 해결할 수 있다는 것은 알겠습니다. 다만, Lock으로도 동시성 제어도 할 수 있지만 줄줄이 기다리기 때문에 선착순 쿠폰 같은 이슈에 대해서는 비관적 락을 걸 경우 100명까지 순차적으로 느리게 된다는 것으로 이해했는데 맞을까요? 제가 이해한 것이 맞다면 락을 사용하면 많이 느릴텐데 보통 어떤 경우에 락을 통해 동시성 제어를 하고, 어떤 경우에 카프카를 쓰시나요? 같은 경우라도 상황마다 다르겠지만.. 예시를 조금만 들어주실 수 있을까요? 잘 이해를 하지 못해서 질문 남깁니다 감사합니다

  • java
  • docker
  • spring-boot
  • kafka
  • redis
이재윤 댓글 1 좋아요 0 조회수 677

주키퍼의 대한 역할이 잘 이해가 되지 않습니다.

미해결

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

주키퍼는 카프카 클러스터 당 최소 1개씩 존재하는 건가요? 주키퍼가 하는 역할이 무엇인지 잘 모르겠습니다.. 좀 더 추가적인 설명을 해주실 수 있을까요? 추가로 집필하신 책에 주키퍼에 대한 자세한 설명이 있을까요?

  • kafka
  • 데이터-엔지니어링
화이팅 댓글 2 좋아요 0 조회수 1193

kafka 실행이 안됩니다.

미해결

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

zookeeper의 경우 D:\{home}\kafka_2.13-2.7.0>bin\windows\zookeeper-server-start.bat config\zookeeper.properties 이대로 실행하면 아래 파바박 뜨면서 tmp에 zookeeper 폴더도 잘 만들어 지는데 kafka는 D:\{home}\kafka_2.13-2.7.0>bin\windows\kafka-server-start.bat config\server.properties 아무것도 안뜨고 그냥 D:\{home}\kafka_2.13-2.7.0> 으로 넘어갑니다 tmp에 폴더도 안 만들어지고요. 딱히 에러가 발생하지도 않습니다. java는 jdk 11.0.2사용 중이고 버전에 문제 없어 보이는데 왜 이러는 걸까요?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
김훈진 (KHJ) 댓글 2 좋아요 0 조회수 984

native 와 file 의 다른점

미해결

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

이번 강의의 native 와 기존에 처음부터 보여주신 uri : file///~~~ 의 방법과 크게 다른점이 뭔가요? 다른점이 없는것 같은데요...

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
좋은 백조 댓글 1 좋아요 0 조회수 695

동시성제어

미해결

실습으로 배우는 선착순 이벤트 시스템

안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
봄봄봄 댓글 2 좋아요 0 조회수 944

콘솔에서 컨슈머 생성

미해결

카프카 완벽 가이드 - 코어편

토픽을 구독하는 컨슈머를 콘솔에서 생성하면, 생성하는 컨슈머마다 항상 새로운 그룹이 만들어지게 되는거고 해당 토픽에 내부 파티션인 __consumer_offset가 생성된 컨슈머의 수만큼 만들어지는게 맞나요? 자바의 KafkaConsumer 를 사용할때 이미 존재하는 컨슈머 그룹에 참여한다면, 토픽에는 해당 컨슈머 그룹에 대한 정보인 __consumer_offset이 이미 존재하고 컨슈머에서 이 값을 읽어오니 earlist로 설정해도 0번 인덱스 레코드부터 읽는게 아닌 __consumer_offset에서 offset 값을 그대로 읽어와 사용하는게 맞나요?

  • kafka
  • 데이터-엔지니어링
정성훈 댓글 1 좋아요 0 조회수 322

수강 기간 연장 부탁드립니다.

미해결

15일간의 빅데이터 파일럿 프로젝트

안녕하세요 강사님 ! 좋은 강의를 꾸준하게 들어 성장하고 싶지만, 항상 마음과 달리 쉽지가 않네요 수강 신청하고 얼마 듣지도 못 했는데 벌써 기간이 얼마 남지 않아 수강 기간을 연장을 요청드리고자 합니다. 좋은 강의 감사드립니다 강사님 !

  • 빅데이터
  • hadoop
  • kafka
  • zookeeper
  • redis
  • flume
  • impala
  • 데이터-엔지니어링
민식 댓글 1 좋아요 0 조회수 333

2023.08.10 기준 Spring Boot 3버전 대 Security Config 설정 파일 공유합니다.

미해결

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

@Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurity { private final UserService userService; private final BCryptPasswordEncoder bCryptPasswordEncoder; private final Environment environment; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(request ->{ request.requestMatchers(antMatcher("/actuator/**")).permitAll(); request.requestMatchers(antMatcher("/**")).permitAll();}) // .headers(header -> header.frameOptions( // frameOptionsConfig -> frameOptionsConfig.disable())) .apply(new MyCustomSecurity()); return http.build(); } public class MyCustomSecurity extends AbstractHttpConfigurer<MyCustomSecurity, HttpSecurity> { @Override public void configure(HttpSecurity http) throws Exception { AuthenticationManager authenticationManager = http.getSharedObject( AuthenticationManager.class); AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager, userService, environment); http.addFilter(authenticationFilter); } protected void configure2(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); } } } 해당 코드는 앞 내용까지 포함하여 설정이 적용된 버전입니다. 저같은 경우는 처음부터 mysql로 진행하여서 h2 콘솔을 사용하지 않아 frameOptions를 주석처리 하였으나, 혹여나 h2 콘솔 사용하시는 분은 주석 해제 후 사용하시면 되고, 23.08.10 기준으로 hasIpAddress는 사용 불가능합니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
psw 댓글 1 좋아요 5 조회수 3126

spring boot 3버전대에서 metrics에서 정보 안나오는 문제 해결

미해결

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

@Configuration @EnableAspectJAutoProxy public class MetricsConfig { @Bean public TimedAspect timedAspect(MeterRegistry registry) { return new TimedAspect(registry); } } 해당 config 파일을 추가해주세요.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
psw 댓글 2 좋아요 15 조회수 1065

window11 / 23.08.09 기준 kafka connect 버전

미해결

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

window11 / 23.08.09 기준으로 kafka connect 버전을 7.1 버전으로 사용하시길 바랍니다. 해당 강의의 6.1 버전에서 properties 경로를 못찾아서 버전업을 했더니 해결 했습니다.

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

docker mysql or mariadb 실행 에러 참고하세요

해결됨

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

mariadb 최신버전 사용시 Dockerfile 그대로 작성시 실행 에러가 발생합니다. 저는 sql 을 백업해서 스키마랑 테이블 새로 만들도록 수정해서 해결했습니다. 추가로 실행후 mysql 접속도 mysql 명령어가 아닌 mariadb 로 작성하셔야 됩니다. mariadb -h127.0.0.1 -uroot -p mysqldump -u root -p mydb > mydb.sql FROM mariadb ENV MYSQL_ROOT_PASSWORD test1357 ENV MYSQL_DATABASE mydb COPY ./mydb.sql /docker-entrypoint-initdb.d/ EXPOSE 3306

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • docker
  • mysql
  • mariadb
khj923265 댓글 1 좋아요 5 조회수 1488

강의자료 주소 좀 알려주세요.

미해결

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

강의자료를 볼 수 있는 github가 있었던 것 같은데 아무리 찾아도 없네요. 강의자료 다운 혹은 볼 수 있는 주소 좀 알려주세요.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
김완선 댓글 1 좋아요 0 조회수 571

The request was rejected because the URL contained a potentially malicious String "%0A"

미해결

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

UserServiceImpl String orderUrl = String.format(env.getProperty("order_service.url"), userId); user-service.yml order_service: url: http://127.0.0.1:8000/order-service/%s/orders The request was rejected because the URL contained a potentially malicious String "%0A" 실행 중에 해당 에러가 발생했습니다. springSecurity가 버전업 되어 %s같은 것들을 사용하지 못하게 막은 것 같은데 해결 방안을 알고 싶습니다. 정확한 에러는 아래와 같습니다. org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "%0A" *spring Security 2.7.12

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

kafka connectors 에러

미해결

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

안녕하세요 강의 잘 듣고 있습니다.!! 127.0.0.1:8083/connectors로 POST 요청으로 { "name": "my-source-connect", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url": "jdbc:mariadb://localhost:3306/mydb", "connection.user": "root", "connection.password": "지정한 password", "mode": "incrementing", "incrementing.column.name": "id", "table.whitelist": "users", "topic.prefix": "my_topic_", "tasks.max": "1" } } 201 응답으로 잘 왔습니다. { "name": "my-source-connect2", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url": "jdbc:mariadb://localhost:3306/mydb", "connection.user": "root", "connection.password": "지정한 password", "mode": "incrementing", "incrementing.column.name": "id", "table.whitelist": "users", "topic.prefix": "my_topic_", "tasks.max": "1", "name": "my-source-connect2" }, "tasks": [], "type": "source" } 127.0.0.1:8083/connectors/my-source-connect/status를 보니 { "name": "my-source-connect", "connector": { "state": "FAILED", "worker_id": "192.168.200.174:8083", "trace": "org.apache.kafka.connect.errors.ConnectException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:62)\n\tat io.confluent.connect.jdbc.JdbcSourceConnector.start(JdbcSourceConnector.java:95)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:190)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:215)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:360)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:343)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:143)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:121)\n\tat org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$1(Plugins.java:181)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:833)\nCaused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb\n\tat java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)\n\tat java.sql/java.sql.DriverManager.getConnection(DriverManager.java:190)\n\tat io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection(GenericDatabaseDialect.java:250)\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection(CachedConnectionProvider.java:84)\n\tat io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection(CachedConnectionProvider.java:54)\n\t... 13 more\n" }, "tasks": [], "type": "source" } 터미널에서 확인해보니 127.0.0.1:8083/connectors로 POST 요청으로 보낼 때 [2023-08-08 19:11:24,848] INFO JdbcSourceConnectorConfig values: batch.max.rows = 100 catalog.pattern = null connection.attempts = 3 connection.backoff.ms = 10000 connection.password = [hidden] connection.url = jdbc:mariadb:// localhost:3306/mydb connection.user = root db.timezone = UTC dialect.name = incrementing.column.name = id mode = incrementing numeric.mapping = null numeric.precision.mapping = false poll.interval.ms = 5000 query = query.retry.attempts = -1 query.suffix = quote.sql.identifiers = ALWAYS schema.pattern = null table.blacklist = [] table.monitoring.startup.polling.limit.ms = 10000 table.poll.interval.ms = 60000 table.types = [TABLE] table.whitelist = [users] timestamp.column.name = [] timestamp.delay.interval.ms = 0 timestamp.granularity = connect_logical timestamp.initial = null topic.prefix = my_topic_ transaction.isolation.mode = DEFAULT validate.non.null = true (io.confluent.connect.jdbc.source.JdbcSourceConnectorConfig:376) [2023-08-08 19:11:24,850] INFO AbstractConfig values: (org.apache.kafka.common.config.AbstractConfig:376) [2023-08-08 19:11:24,856] INFO [Worker clientId=connect-1, groupId=connect-cluster] Connector my-source-connect2 config updated (org.apache.kafka.connect.runtime.distributed.DistributedHerder:2092) [2023-08-08 19:11:24,858] INFO [Worker clientId=connect-1, groupId=connect-cluster] Rebalance started (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:231) [2023-08-08 19:11:24,858] INFO [Worker clientId=connect-1, groupId=connect-cluster] (Re-)joining group (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:566) [2023-08-08 19:11:24,860] INFO 127.0.0.1 - - [08/8월/2023:10:11:24 +0000] "POST /connectors HTTP/1.1" 201 400 "-" "PostmanRuntime/7.32.3" 18 ( org.apache.kafka.connect.runtime.rest .RestServer:62) [2023-08-08 19:11:24,861] INFO [Worker clientId=connect-1, groupId=connect-cluster] Successfully joined group with generation Generation{generationId=4, memberId='connect-1-a7b22fdb-774a-479a-9618-b4e9504e4e95', protocol='sessioned'} (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:627) [2023-08-08 19:11:24,866] INFO [Worker clientId=connect-1, groupId=connect-cluster] Successfully synced group in generation Generation{generationId=4, memberId='connect-1-a7b22fdb-774a-479a-9618-b4e9504e4e95', protocol='sessioned'} (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:802) [2023-08-08 19:11:24,866] INFO [Worker clientId=connect-1, groupId=connect-cluster] Joined group at generation 4 with protocol version 2 and got assignment: Assignment{error=0, leader='connect-1-a7b22fdb-774a-479a-9618-b4e9504e4e95', leaderUrl=' http://192.168.200.174:8083/ ', offset=5, connectorIds=[my-source-connect2, my-source-connect1, my-source-connect], taskIds=[], revokedConnectorIds=[], revokedTaskIds=[], delay=0} with rebalance delay: 0 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:2282) [2023-08-08 19:11:24,866] INFO [Worker clientId=connect-1, groupId=connect-cluster] Starting connectors and tasks using config offset 5 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1676) [2023-08-08 19:11:24,867] INFO [Worker clientId=connect-1, groupId=connect-cluster] Starting connector my-source-connect2 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1793) [2023-08-08 19:11:24,867] INFO [my-source-connect2|worker] Creating connector my-source-connect2 of type io.confluent.connect.jdbc.JdbcSourceConnector (org.apache.kafka.connect.runtime.Worker:293) [2023-08-08 19:11:24,867] INFO [my-source-connect2|worker] SourceConnectorConfig values: config.action.reload = restart connector.class = io.confluent.connect.jdbc.JdbcSourceConnector errors.log.enable = false errors.log.include.messages = false errors.retry.delay.max.ms = 60000 errors.retry.timeout = 0 errors.tolerance = none exactly.once.support = requested header.converter = null key.converter = null name = my-source-connect2 offsets.storage .topic = null predicates = [] tasks.max = 1 topic.creation.groups = [] transaction.boundary = poll transaction.boundary.interval.ms = null transforms = [] value.converter = null (org.apache.kafka.connect.runtime.SourceConnectorConfig:376) [2023-08-08 19:11:24,867] INFO [my-source-connect2|worker] EnrichedConnectorConfig values: config.action.reload = restart connector.class = io.confluent.connect.jdbc.JdbcSourceConnector errors.log.enable = false errors.log.include.messages = false errors.retry.delay.max.ms = 60000 errors.retry.timeout = 0 errors.tolerance = none exactly.once.support = requested header.converter = null key.converter = null name = my-source-connect2 offsets.storage .topic = null predicates = [] tasks.max = 1 topic.creation.groups = [] transaction.boundary = poll transaction.boundary.interval.ms = null transforms = [] value.converter = null (org.apache.kafka.connect.runtime.ConnectorConfig$EnrichedConnectorConfig:376) [2023-08-08 19:11:24,868] INFO [my-source-connect2|worker] Instantiated connector my-source-connect2 with version 10.7.3 of type class io.confluent.connect.jdbc.JdbcSourceConnector (org.apache.kafka.connect.runtime.Worker:315) [2023-08-08 19:11:24,868] INFO [my-source-connect2|worker] Finished creating connector my-source-connect2 (org.apache.kafka.connect.runtime.Worker:336) [2023-08-08 19:11:24,868] INFO [Worker clientId=connect-1, groupId=connect-cluster] Finished starting connectors and tasks (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1704) [2023-08-08 19:11:24,868] INFO [my-source-connect2|worker] Starting JDBC Source Connector (io.confluent.connect.jdbc.JdbcSourceConnector:71) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] JdbcSourceConnectorConfig values: batch.max.rows = 100 catalog.pattern = null connection.attempts = 3 connection.backoff.ms = 10000 connection.password = [hidden] connection.url = jdbc:mariadb:// localhost:3306/mydb connection.user = root db.timezone = UTC dialect.name = incrementing.column.name = id mode = incrementing numeric.mapping = null numeric.precision.mapping = false poll.interval.ms = 5000 query = query.retry.attempts = -1 query.suffix = quote.sql.identifiers = ALWAYS schema.pattern = null table.blacklist = [] table.monitoring.startup.polling.limit.ms = 10000 table.poll.interval.ms = 60000 table.types = [TABLE] table.whitelist = [users] timestamp.column.name = [] timestamp.delay.interval.ms = 0 timestamp.granularity = connect_logical timestamp.initial = null topic.prefix = my_topic_ transaction.isolation.mode = DEFAULT validate.non.null = true (io.confluent.connect.jdbc.source.JdbcSourceConnectorConfig:376) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] Validating JDBC URL. (io.confluent.connect.jdbc.dialect.DatabaseDialects:171) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] Validated JDBC URL. (io.confluent.connect.jdbc.dialect.DatabaseDialects:174) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] Validating JDBC URL. (io.confluent.connect.jdbc.dialect.DatabaseDialects:171) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] Validated JDBC URL. (io.confluent.connect.jdbc.dialect.DatabaseDialects:174) [2023-08-08 19:11:24,869] INFO [my-source-connect2|worker] Initial connection attempt with the database. (io.confluent.connect.jdbc.JdbcSourceConnector:94) [2023-08-08 19:11:24,871] INFO [my-source-connect2|worker] Unable to connect to database on attempt 1/3. Will retry in 10000 ms. (io.confluent.connect.jdbc.util.CachedConnectionProvider:90) java.sql.SQLException: No suitable driver found for jdbc:mariadb:// localhost:3306/mydb at java.sql/java.sql.DriverManager.getConnection( DriverManager.java:706 ) at java.sql/java.sql.DriverManager.getConnection( DriverManager.java:190 ) at io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection( GenericDatabaseDialect.java:250 ) at io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection( CachedConnectionProvider.java:84 ) at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection( CachedConnectionProvider.java:54 ) at io.confluent.connect.jdbc.JdbcSourceConnector.start( JdbcSourceConnector.java:95 ) at org.apache.kafka.connect.runtime.WorkerConnector.doStart( WorkerConnector.java:190 ) at org.apache.kafka.connect.runtime.WorkerConnector.start( WorkerConnector.java:215 ) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo( WorkerConnector.java:360 ) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo( WorkerConnector.java:343 ) at org.apache.kafka.connect.runtime.WorkerConnector.doRun( WorkerConnector.java:143 ) at org.apache.kafka.connect.runtime.WorkerConnector.run ( WorkerConnector.java:121 ) at org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$1( Plugins.java:181 ) at java.base/java.util.concurrent.Executors$RunnableAdapter.call( Executors.java:539 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1136 ) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:635 ) at java.base/java.lang.Thread.run( Thread.java:833 ) [2023-08-08 19:11:34,877] INFO [my-source-connect2|worker] Unable to connect to database on attempt 2/3. Will retry in 10000 ms. (io.confluent.connect.jdbc.util.CachedConnectionProvider:90) java.sql.SQLException: No suitable driver found for jdbc:mariadb:// localhost:3306/mydb at java.sql/java.sql.DriverManager.getConnection( DriverManager.java:706 ) at java.sql/java.sql.DriverManager.getConnection( DriverManager.java:190 ) at io.confluent.connect.jdbc.dialect.GenericDatabaseDialect.getConnection( GenericDatabaseDialect.java:250 ) at io.confluent.connect.jdbc.util.CachedConnectionProvider.newConnection( CachedConnectionProvider.java:84 ) at io.confluent.connect.jdbc.util.CachedConnectionProvider.getConnection( CachedConnectionProvider.java:54 ) at io.confluent.connect.jdbc.JdbcSourceConnector.start( JdbcSourceConnector.java:95 ) at org.apache.kafka.connect.runtime.WorkerConnector.doStart( WorkerConnector.java:190 ) at org.apache.kafka.connect.runtime.WorkerConnector.start( WorkerConnector.java:215 ) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo( WorkerConnector.java:360 ) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo( WorkerConnector.java:343 ) at org.apache.kafka.connect.runtime.WorkerConnector.doRun( WorkerConnector.java:143 ) at org.apache.kafka.connect.runtime.WorkerConnector.run ( WorkerConnector.java:121 ) at org.apache.kafka.connect.runtime.isolation.Plugins.lambda$withClassLoader$1( Plugins.java:181 ) at java.base/java.util.concurrent.Executors$RunnableAdapter.call( Executors.java:539 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1136 ) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:635 ) at java.base/java.lang.Thread.run( Thread.java:833 ) 으로 발생합니다. 에러를 보니 java.sql.SQLException: No suitable driver found for jdbc:mariadb:// localhost:3306/mydb Kafka Connect 런타임에서 MariaDB의 JDBC 드라이버를 찾지 못한거 같았습니다. ~/confluent-7.4.0/etc/kafka/connectdistributed.properties 경로에 plugin.path=/Users/ryu/kafka/confluentinc-kafka-connect-jdbc-10.7.3/lib 잘 지정해준거 같았고 문제가 예상되는 부분은 현재 gradle을 사용해서 예제를 따라하고 있었습니다. ...Maven Local Repository에 라이브러리 배포하는 식으로해서 plugins { id 'java-library' id 'maven-publish' id 'org.springframework.boot' version '2.7.14' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.spring' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } ext { set('springCloudVersion', "2021.0.8") } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' implementation 'org.modelmapper:modelmapper:2.4.5' implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.2' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.h2database:h2:1.3.176' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } tasks.named('test') { useJUnitPlatform() } publishing { publications { maven(MavenPublication) { groupId = 'org.mariadb.jdbc' // groupId artifactId = 'mariadb-java-client' // artifactId version = '2.7.2' // version from components.java } } } publishMavenPublicationToMavenLocal 을 통해서 배포해버리고... maven의 기본 repository인 .m2에서 확인했을 때 .jar 파일이 mariadb-java-client-3.1.4-plain.jar 밖에 없어 사용했는데 혹시 gradle을 이용하면서 해결할 수 있는 방법이 있을까요?

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

window11 / 23.08.08 기준 설정

미해결

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

Eralang 최신버전 다운 가정 하에 환경변수 ERLANG_HOME : C:\Program Files\Erlang OTP 추가 기존의 path 변수에 %ERLANG_HOME%\bin 추가 그 후 rabbitmq command prompt 여신 후 rabbitmq-server -detached rabbitmq-plugins enable rabbitmq_management 순서대로 입력 만약 안될 시에 rabbitmq-service.bat remove rabbitmq-service.bat install rabbitmq-server -detached rabbitmq-plugins enable rabbitmq_management 순서로 입력

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
psw 댓글 1 좋아요 3 조회수 1034

빅데이터 관리에 관해서

미해결

카프카 완벽 가이드 - 코어편

안녕하세요 강사님 강의 잘 듣고 있습니다. 강의중간에 잠깐 언급하고 넘어가신 부분중에 궁금한게 있어서 질문드립니다. 현업에서 실제로 하루에 10기가 혹은 20기가로 엄청난 양의 데이터가 나올때 이 데이터를 실제로 어떻게 처리하는지 궁금합니다. 감사합니다.

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

안녕하세요 강사님 Redis Template에 관한 질문입니다.

미해결

실습으로 배우는 선착순 이벤트 시스템

사놓고 안 듣다가 이제 제대로 Redis를 학습해보려고 합니다. Redis Template를 사용하는 방식과 그냥 Repository를 사용하는 방식이 있다고 들었습니다. Redis Template 말고 interface RedisRepository extends CrudRepository<> 쿠폰 발급을 이렇게 정의해서 사용할 수 있나요?

  • java
  • docker
  • spring-boot
  • kafka
  • redis
진짜 잘하고싶다 댓글 2 좋아요 0 조회수 720

Kafka 처리량 조절 관련 문의드립니다

미해결

실습으로 배우는 선착순 이벤트 시스템

며칠전 수강시작했구요. 첫 완강한 인프런 유료강의가 되었네요. 앞으로도 이러한 스타일 (주제중심, 적당한 총 길이)의 강의를 더 만들어주시면 감사하겠습니다. 업무환경에서 다양한 기술스택을 경험하기 어려운 개발자들도 경험하면 좋을 기술스택도 좀 포함되면 더할나위 없이 좋을것 같구요. 제 경우엔 이 강의 덕분에 아주 오래전 살짝 경험해본 Redis 를 복습하게 되었고, Kafka 에 대해서도 입문하게 되었습니다. 질문드립니다. 이 강의에서 Kafka 이용의 장점은 처리량 조절이라고 말씀주셨습니다. 처리량 조절의 구체적인 방안은 구성방식, 요건등 상황에 따라 다양한 안이 있긴 하겠지만 혹시 알려주실만한 방안이 있을까요? 개인적으로 찾아본것은 컨슈머 옵션중 fetch.max.wait.ms 또는 fetch.max.bytes 같은 옵션을 이용하면 괜찮겠다라는 생각이 들긴 했습니다. (쓰면서 생각드는건데.... 만약 두개 동시에 이용시 OR 조건으로 동작해야 될텐데.. 라는 생각이...) 경험하신 사례이든, 참고할만한 링크이든 혹시 알려주실수 있다면 감사하겠습니다.

  • java
  • docker
  • spring-boot
  • kafka
  • redis
Goldtalks 댓글 1 좋아요 0 조회수 410

인기 태그

인프런 TOP Writers

주간 인기글