176만명의 커뮤니티!! 함께 토론해봐요.
미해결
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 프로듀서 소개 강의를 보다 질문드립니다. 프로듀서에서 레코드를 send하면 Accumulator에서 배치로 묶는 과정을 한다고 하셨는데요. 실제 Sender가 발생하는 시점에 프로듀서 애플리케이션에서 항상 1개의 배치 단위로 tcp 통신이 발생하나요? 아니면 내부적으로 여러개의 배치를 한번의 tcp 통신으로 통신할까요?
화이팅
2023-08-17T00:45:31.140Z
댓글 1
좋아요 0
조회수 268
해결됨
실습으로 배우는 선착순 이벤트 시스템
먼저 강의 잘 들었습니다. 취준 중인데도 이해가 잘 돼서 좋습니다! 다름이 아니라 동시성 제어를 할 때 redis, kafka로도 해결할 수 있다는 것은 알겠습니다. 다만, Lock으로도 동시성 제어도 할 수 있지만 줄줄이 기다리기 때문에 선착순 쿠폰 같은 이슈에 대해서는 비관적 락을 걸 경우 100명까지 순차적으로 느리게 된다는 것으로 이해했는데 맞을까요? 제가 이해한 것이 맞다면 락을 사용하면 많이 느릴텐데 보통 어떤 경우에 락을 통해 동시성 제어를 하고, 어떤 경우에 카프카를 쓰시나요? 같은 경우라도 상황마다 다르겠지만.. 예시를 조금만 들어주실 수 있을까요? 잘 이해를 하지 못해서 질문 남깁니다 감사합니다
java docker spring-boot kafka redis
이재윤
2023-08-16T09:04:52.044Z
댓글 1
좋아요 0
조회수 677
미해결
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
주키퍼는 카프카 클러스터 당 최소 1개씩 존재하는 건가요? 주키퍼가 하는 역할이 무엇인지 잘 모르겠습니다.. 좀 더 추가적인 설명을 해주실 수 있을까요? 추가로 집필하신 책에 주키퍼에 대한 자세한 설명이 있을까요?
화이팅
2023-08-16T01:42:25.466Z
댓글 2
좋아요 0
조회수 1193
미해결
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)
2023-08-15T23:32:12.184Z
댓글 2
좋아요 0
조회수 984
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
이번 강의의 native 와 기존에 처음부터 보여주신 uri : file///~~~ 의 방법과 크게 다른점이 뭔가요? 다른점이 없는것 같은데요...
spring-boot jpa 아키텍처 spring-cloud kafka msa
좋은 백조
2023-08-15T12:53:54.179Z
댓글 1
좋아요 0
조회수 695
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?
java docker spring-boot kafka redis
봄봄봄
2023-08-14T04:25:33.197Z
댓글 2
좋아요 0
조회수 944
미해결
카프카 완벽 가이드 - 코어편
토픽을 구독하는 컨슈머를 콘솔에서 생성하면, 생성하는 컨슈머마다 항상 새로운 그룹이 만들어지게 되는거고 해당 토픽에 내부 파티션인 __consumer_offset가 생성된 컨슈머의 수만큼 만들어지는게 맞나요? 자바의 KafkaConsumer 를 사용할때 이미 존재하는 컨슈머 그룹에 참여한다면, 토픽에는 해당 컨슈머 그룹에 대한 정보인 __consumer_offset이 이미 존재하고 컨슈머에서 이 값을 읽어오니 earlist로 설정해도 0번 인덱스 레코드부터 읽는게 아닌 __consumer_offset에서 offset 값을 그대로 읽어와 사용하는게 맞나요?
정성훈
2023-08-11T18:17:07.729Z
댓글 1
좋아요 0
조회수 322
미해결
15일간의 빅데이터 파일럿 프로젝트
안녕하세요 강사님 ! 좋은 강의를 꾸준하게 들어 성장하고 싶지만, 항상 마음과 달리 쉽지가 않네요 수강 신청하고 얼마 듣지도 못 했는데 벌써 기간이 얼마 남지 않아 수강 기간을 연장을 요청드리고자 합니다. 좋은 강의 감사드립니다 강사님 !
빅데이터 hadoop kafka zookeeper redis flume impala 데이터-엔지니어링
민식
2023-08-10T14:59:41.648Z
댓글 1
좋아요 0
조회수 333
미해결
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
2023-08-10T08:32:47.530Z
댓글 1
좋아요 5
조회수 3126
미해결
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
2023-08-10T08:24:29.187Z
댓글 2
좋아요 15
조회수 1065
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
window11 / 23.08.09 기준으로 kafka connect 버전을 7.1 버전으로 사용하시길 바랍니다. 해당 강의의 6.1 버전에서 properties 경로를 못찾아서 버전업을 했더니 해결 했습니다.
spring-boot jpa 아키텍처 spring-cloud kafka msa
psw
2023-08-10T00:34:52.884Z
댓글 1
좋아요 1
조회수 1001
해결됨
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
2023-08-09T14:08:36.679Z
댓글 1
좋아요 5
조회수 1488
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의자료를 볼 수 있는 github가 있었던 것 같은데 아무리 찾아도 없네요. 강의자료 다운 혹은 볼 수 있는 주소 좀 알려주세요.
spring-boot jpa 아키텍처 spring-cloud kafka msa
김완선
2023-08-09T01:40:11.920Z
댓글 1
좋아요 0
조회수 571
미해결
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
2023-08-08T12:32:59.204Z
댓글 1
좋아요 0
조회수 1682
미해결
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
2023-08-08T10:32:15.004Z
댓글 1
좋아요 0
조회수 1293
미해결
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
2023-08-08T05:24:38.779Z
댓글 1
좋아요 3
조회수 1034
미해결
카프카 완벽 가이드 - 코어편
안녕하세요 강사님 강의 잘 듣고 있습니다. 강의중간에 잠깐 언급하고 넘어가신 부분중에 궁금한게 있어서 질문드립니다. 현업에서 실제로 하루에 10기가 혹은 20기가로 엄청난 양의 데이터가 나올때 이 데이터를 실제로 어떻게 처리하는지 궁금합니다. 감사합니다.
boyjeong
2023-08-07T11:17:30.564Z
댓글 2
좋아요 0
조회수 365
미해결
실습으로 배우는 선착순 이벤트 시스템
사놓고 안 듣다가 이제 제대로 Redis를 학습해보려고 합니다. Redis Template를 사용하는 방식과 그냥 Repository를 사용하는 방식이 있다고 들었습니다. Redis Template 말고 interface RedisRepository extends CrudRepository<> 쿠폰 발급을 이렇게 정의해서 사용할 수 있나요?
java docker spring-boot kafka redis
진짜 잘하고싶다
2023-08-04T07:17:49.964Z
댓글 2
좋아요 0
조회수 720
미해결
실습으로 배우는 선착순 이벤트 시스템
며칠전 수강시작했구요. 첫 완강한 인프런 유료강의가 되었네요. 앞으로도 이러한 스타일 (주제중심, 적당한 총 길이)의 강의를 더 만들어주시면 감사하겠습니다. 업무환경에서 다양한 기술스택을 경험하기 어려운 개발자들도 경험하면 좋을 기술스택도 좀 포함되면 더할나위 없이 좋을것 같구요. 제 경우엔 이 강의 덕분에 아주 오래전 살짝 경험해본 Redis 를 복습하게 되었고, Kafka 에 대해서도 입문하게 되었습니다. 질문드립니다. 이 강의에서 Kafka 이용의 장점은 처리량 조절이라고 말씀주셨습니다. 처리량 조절의 구체적인 방안은 구성방식, 요건등 상황에 따라 다양한 안이 있긴 하겠지만 혹시 알려주실만한 방안이 있을까요? 개인적으로 찾아본것은 컨슈머 옵션중 fetch.max.wait.ms 또는 fetch.max.bytes 같은 옵션을 이용하면 괜찮겠다라는 생각이 들긴 했습니다. (쓰면서 생각드는건데.... 만약 두개 동시에 이용시 OR 조건으로 동작해야 될텐데.. 라는 생각이...) 경험하신 사례이든, 참고할만한 링크이든 혹시 알려주실수 있다면 감사하겠습니다.
java docker spring-boot kafka redis
Goldtalks
2023-08-01T09:19:41.832Z
댓글 1
좋아요 0
조회수 410
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
mysql 접속 후 아래 명령어 2가지를 통해 알 수 있음. show variables like 'datadir'; select @@datadir;
spring-boot jpa 아키텍처 spring-cloud kafka msa
nyximos
2023-08-01T03:29:24.197Z
댓글 1
좋아요 1
조회수 534