월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 스트림즈 에러 핸들링 질문 드립니다
카프카 스트림즈에서 에러 발생 시 commit이 어떻게 진행되는지 궁금합니다(카프카 스트림즈는 auto.commit 설정을 변경할 수 없는걸로 이해하고 있습니다혹시 잘못 이해하고 있다면 말씀 부탁드립니다~)에러 핸들링 클래스 리턴 타입이 각각 FAIL, CONTIUNE 일 때FAIL이면 커밋 X, CONTINUE이면 커밋 O맞을까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 클러스터 질문이 있습니다.
미러 메이커 2를 이용해 보려고 하고 있습니다.현재 주키퍼 앙상블을 따로 구축했고 카프카 클러스터 한 개를 우선 만들었습니다.미러 메이커를 사용하여 새로운 카프카 클러스터(2)로 보내려고 하는데 새로 만드는 클러스터를 원래 있던 주키퍼 앙상블에 연결해야 하는지 아니면 새로운 주키퍼를 구축해야 하는지 궁금합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
현재 kafka stable 버전이 3.3.1이라고 되어 있습니다.
현재 kafka stable 버전이 3.3.1이라고 되어 있습니다. 3.3.1 버전으로 해도 무방할까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
5번 문제 해설 관련 질문입니다.
안녕하세요, 5번 문제 해설 관련 질문이 있습니다.5번 해설에서 min.insync.replicas=2이고 replication factor가 3일 때 가장 신뢰도가 높다고 설명해주셨는데, min.insync.replicas에는 리더도 포함하는 것 아닌가요?신뢰도를 최우선으로 둔다면 min.insync.replicas == replication factor가 되어야 하는 것 아닌지 질문 드립니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
ProducerWithSyncCallback 코드 관련 질문
안녕하세요, ProducerWithSyncCallback 코드에서 궁금한 점이 있어 질문 남깁니다.try { RecordMetadata metadata = producer.send(record).get(); logger.info(metadata.toString()); } catch (Exception e) { logger.error(e.getMessage(), e); } finally { producer.flush(); producer.close(); }예제로 보여주신 위 코드에서 producer.flush() 코드가 배치 사이즈만큼 레코드가 쌓이는 걸 기다리지 않고 바로 레코드를 브로커로 보내는 코드로 알고 있는데, producer.flush() 코드가 finally에 있는 것이 의아해서 질문드립니다.producer.send 호출 후 linger.ms 가 0이라서 바로 브로커로 보내지고 해당 결과를 기다리던 get이 결과를 받아 logger.info 를 호출한 것으로 이해했는데요, 그럼 위 예제에서 producer.flush()는 불필요한 코드로 보면 될까요?제가 잘못 이해하고 있는 부분이 있는지 확인 부탁드립니다:)
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
스트림과 테이블 조인 시
안녕하세요 좋은 강의 감사합니다.혹시 스트림과 테이블을 조인 할 때에테이블에 해당 key에 대한 데이터가 없을 시에는 어떤 현상이 발생하나요?스트림즈에서 누락이 되는 걸까요 혹은 join 과정에서 테이블의 value 가 null이 되는 방식일까요? 감사합니다 :)
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
일시적으로 트래픽이 몰리는 상황
안녕하세요. 좋은 강의 감사합니다.컨슈머 랙 단원에서 궁금한 점이 생겨 질문 드립니다.추석과 같은 이벤트로 인해 일시적으로 트래픽이 몰리는 상황에서 파티션과 컨슈머를 추가함으로써 처리량을 늘려 대응한다고 말씀해주신 부분에서 궁금증이 생겼습니다.파티션은 다시 줄일 수 없는 것으로 알고 있는데, 이러한 일시적 트래픽 증가를 대응하는 방안으로 적절한 지 여쭤보고 싶습니다.일시적으로 트래픽이 엄청 몰리는 상황에 무턱대고 파티션을 n배 증가시켰다가 추후 트래픽이 다시 원래대로 돌아왔을 때 남은 파티션이 낭비되는 것이 아닌가 생각이 들어서요. (컨슈머는 감소가 가능하다고 쳐도요! - 리밸런싱)혹은 다른 방안으로는 어떤게 있을 수 있을까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Time series 데이터에 kafka 적용
안녕하세요, 강의 잘 듣고 있습니다.저는 주로 시계열 데이터를 다루고 있는데요, 시계열 중에서도 데이터의 순서가 중요한 데이터입니다.kafka를 사용할 경우 내부 로직은 추상화 되어있고, 데이터의 전달과 1번 전달보장할 수 있으나( dempotency 설정등) 데이터의 전달 순서는 보장하지 않는 것으로 생각됩니다 (질문1) kafka는 기본적으로 데이터 전달에서 순서를 보장하지 않는 것이 맞는지 확인 부탁드립니다.스트림즈 애플리 케이션 에서는 강의 내용을 들어보니, 순서가 보장이 되는 것으로 보입니다. 예컨대 KStreams, KTable 조인 스트림즈 애플리케이션 강의자료에서 Ktable의 값이 업데이트 될 경우의 예시를 들어주셨는데요, 만약 KStreams, KTable 양쪽 모두 값 변경이 잦고, 이 순서가 중요할 경우에도 동작을 해야할 것으로 보입니다. (질문2) Time sereis 데이터를 kafka를 활용하여 전달할 경우, 변경이 잦고 순서가 중요한 경우에도 스트림즈 애플리케이션을 사용할 수 있을지 궁금합니다.2번 질문의 경우, 제가 전부를 이해하지 못했으나 다음의 블로그의 내용을 참조했습니다.https://engineering.linecorp.com/ko/blog/line-shopping-platform-kafka-mongodb-kubernetes/#:~:text=%EC%82%AC%EC%8B%A4%20CDC%EB%A5%BC,%EC%97%B0%EA%B2%B0%ED%95%B4%20%EC%99%84%EC%84%B1%ED%95%9C%20%EB%AA%A8%EC%8A%B5%EC%9E%85%EB%8B%88%EB%8B%A4
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
SimpleProducer 실행 시 Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected 오류
안녕하세요 데브 원영님!강의를 수강하며 예제를 실행 중에 오류를 마주쳤는데 구글링을 해도 해결이 되지 않아 문의 남깁니다.import java.util.Properties; public class SimpleProducer { private final static Logger logger = LoggerFactory.getLogger(SimpleProducer.class); private final static String TOPIC_NAME = "test"; private final static String BOOTSTRAP_SERVERS = "localhost:9092"; public static void main(String[] args) { Properties configs = new Properties(); configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS); configs.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); configs.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); KafkaProducer<String, String> producer = new KafkaProducer<>(configs); String messageValue = "testMessage"; ProducerRecord<String, String> record = new ProducerRecord<>(TOPIC_NAME, messageValue); producer.send(record); logger.info("{}", record); producer.flush(); producer.close(); } }[main] INFO org.apache.kafka.clients.producer.ProducerConfig - ProducerConfig values: acks = 1 batch.size = 16384 bootstrap.servers = [localhost:9092] buffer.memory = 33554432 client.dns.lookup = default client.id = producer-1 compression.type = none connections.max.idle.ms = 540000 delivery.timeout.ms = 120000 enable.idempotence = false interceptor.classes = [] key.serializer = class org.apache.kafka.common.serialization.StringSerializer linger.ms = 0 max.block.ms = 60000 max.in.flight.requests.per.connection = 5 max.request.size = 1048576 metadata.max.age.ms = 300000 metadata.max.idle.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner receive.buffer.bytes = 32768 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retries = 2147483647 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT security.providers = null send.buffer.bytes = 131072 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2] ssl.endpoint.identification.algorithm = https ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLSv1.2 ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS transaction.timeout.ms = 60000 transactional.id = null value.serializer = class org.apache.kafka.common.serialization.StringSerializer [main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version: 2.5.0 [main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId: 66563e712b0b9f84 [main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka startTimeMs: 1664022671614 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected Process finished with exit code 130 BOOTSTRAP_SERVER를 my-kafka로 실행하면 아예 오류가 떠버려서 localhost로 바꿔서 진행하였습니다.에러 내용은 다음과 같습니다.server.properites 내용은 다음과 같습니다.제가 놓치고 있는 부분이 있다면 알려주세요! 감사합니다.:)
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
외부 EC2에서 카프카를 설치하고 로컬 프로듀서에서 메시지를 전송하려고 하는데 에러가 납니다 ㅠㅠ
kafka01은 ec2에 설치되어있는 카프카 클러스터입니다.EC2의 advertised listener와 BOOTSTRAP_SERVERS의 값을 맞춰주어서 연결될 줄 알았는데 되지가 않습니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Consumer Lag 이 Partition당 1개씩 계속 남아있습니다.
안녕하세요. 원영님 ~!카프카 클러스터에 컨슈머 그룹을 구성해서 토픽을 구독하도록 구성했습니다.consumer 설정은 아래와 같습니다.consumer: configuration: session: timeout: ms: 10000 # 10초동안 하트비트 안오면 그룹에서 제외 heartbeat: interval: ms: 3000 # 3초마다 하트비트 전송 request: timeout: ms: 2147483647 # Integer.MAX_VALUE -> 무조건 끝까지 처리 max: poll: records: 1000 # 한번에 500개씩 interval: ms: 2147483647 # Integer.MAX_VALUE -> 무조건 끝까지 처리consumer lag은 "Producer가 쓴 offset 최신값"과 "Consumer가 읽은 offset의 값"의 차이로 정의되는것으로 알고 있는데요.그런데 일부 토픽에서 처리는 정상적으로 되고있는데 Kafka manager를 통해서 확인해보면(아래 캡쳐 참조) 1개의 Lag이 계속 유지되고 있어서, 해당 Lag이 계속 남아있는게 누락되는 레코드들이 있는건지, 아니면 일반적인 현상인지 문의 드립니다.감사합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 커넥트 질문입니다
안녕하세요. 선생님카프카 커넥트에 관해 질문드립니다.커넥터를 생성한 후 삭제를 하고, 같은 이름으로 다시 생성도 가능한가요?커넥터의 정보가 connect-configs나 offset 토픽에 순차적으로 저장되어 업데이트가 되지 않는 것 같아 여쭤봅니다.좋은 강의 잘 듣고 있습니다감사합니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
ack, min.insync.replicas
안녕하세요, 수업 잘 듣고 있습니다.질문입니다.카프카 실행시 데이터 무결성 확인 작업을 할 때 해당 토픽에 참조하는 값이 min.insync.replicas 를 우선 확인 하고, 그다음 acks값을 확인한다고 보면 될까요? 그렇다면 min.insync.replicas의 default 값은 무엇인지요?만약 acks=1 로 설정되어있고 해당 토픽의 min.insync.replicas=2로 설정되어 있을경우,2로 동작하는지와 같은 질문입니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
안녕하세요 원영님. 강의 외적인 내용일 수 있지만 aws kinesis에 대해 질문드립니다.
안녕하세요 원영님. aws kinesis data stream이 serverless kafka broker인가? 에 대해서 질문드리려고 합니다. (혹시 kinesis가 kafka와는 상관없는 별도의 서비스라면 강의 내용과 완전히 벗어나는 내용이라 죄송합니다!!)현재 업무에서 aws kinesis data stream을 사용하고 있습니다. 토픽, 파티션, 레코드, 오프셋 등 데이터를 실시간으로 받아 저장 및 처리하는 형태가 kafka와 비슷해 kinesis data stream 또한 다른 서버리스 서비스들과 유사하게 서버리스 카프카 브로커라고 생각했습니다.그런데 강의를 듣다보니 kafka와 kinesis data stream은 차이가 있습니다. 예를 들면 kafka의 파티션은 줄일 수 없지만 kinesis data stream의 shard는 줄일 수 있습니다. 서버리스 kafka라면 불가능한 일입니다.이 둘은 아예 다른 서비스라고 보는게 맞을까요?
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
예제코드 실행 질문입니다.
안녕하세요. 제가 GCP Ubuntu위에서 실습을 진행하고 있는데, Desktop Mode가 없어서 Intellij 설치가 되지 않습니다. 그래서 터미널 상에서 Gradle을 이용해서 코드를 실행하려고 하는데 잘 되지 않아서 질문드립니다. simple-kafka-producer 폴더 위에서 gradle wrapper gradle build java -jar ./build/libs/simple-kafka-producer-1.0.jar 해서 jar 파일 생성을 하고 jar 파일을 java를 이용해서 실행했는데 no main manifest attribute, in simple-kafka-producer-1.0.jar 오류가 나옵니다. 혹시 gradle을 사용해서 실행할 때 이렇게 하는게 맞는건가요? 아니라면 어떻게 실행할 수 있을까요? 답변해주시면 감사하겠습니다.
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
삭제가 궁금합니다!
안녕하세요 초반부 강의를 듣던 중 궁금증이 생겨서 글 남깁니다.active가 아닌 세그먼트에서만 삭제가 일어난다고 하셨는데 세그먼트를 보유할 최대 기간을 7일이라고 현재 active segment가 생성된 지 7일이 되어도 active segment는 삭제에서 계속해서 제외되는지 궁금합니다!
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
group id 질문입니다
group id 옵션 설정하게 되면 consumer group 이 지정되어, 컨슈머가 토픽의 파티션을 구독하는 형태로 지정이 된다고 이해하고 있습니다. Assignor 가 (2.5.0기준 RangeAssignor) 해당 컨슈머 그룹에 구독되는걸 설정해 주는건지가 궁금합니다. 컨슈머 그룹 운영시에 Assignor 가 설정한다면 assign() 함수로 할당을 하게 된다면 어떻게 할당되는지도 궁금합니다. Assignor 가 동작을 하지 않고 개발자가 직접 할당하는 것인지... 정리하자면 GroupId 를 사용하는 컨슈머 그룹에 대한 구독 대한 설명과 Assing() 함수를 통하여 컨슈머를 할당하는 것에 대한 차이가 어떻게 되는것인지 입니다
- 해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
컨슈머의 파티션 통신
섹션2 카프카 기본 개념 설명 pdf 의 파티션 개수와 컨슈머 개수의 처리량 설명에서 병렬처리량을 늘리려면 토픽에 설정된 파티션 갯수를 늘리고, 늘린 파티션 갯수만큼 컨슈머를 연결시켜 처리량을 늘리는 방법을 소개하고 있습니다. 이전설명에선 토픽에 소속되는 파티션은 리더 파티션, 팔로워 파티션으로 이루어져 있고, 리더 파티션의 데이터들은 팔로워 파티션에 복제가 된다고 설명이 되어있던 것 같은데요 컨슈머들은 그럼 팔로워 파티션과 연산처리를 위한 통신을 한다는 것 아닌가요? 아니라고 한다면 파티션 개수와 컨슈머 개수의 처리량의 그림 설명의 파티션 0, 1을 제가 잘못 이해하고 있는건지 궁금합니다. 퀴즈의 4번 설명중에 컨슈머 설명과 이전 파티션 갯수증가와 병렬처리의 설명이 햇갈려서 질문남깁니다
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 데이터는 세그먼트단위로만 삭제가 되는게 아니었던건가요
카프카 레코드삭제는 세그먼트 단위로만 가능하다고 말씀하신 앞선 강의와, kafka-delete-record가 상충되는거 같아 여쭙니다. delete-record의 예시로 5를 주셨는데 만약 한 segment에 0 ~ 100까지의 레코드가 들어있다면 해당 옵션으로 segment는 6~100까지의 데이터를 들고있게 되는걸로 이해해도 괜찮을까요
- 미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
현재 진도까지의 test topic에 대해서 질문있습니다
좋은 강의 만들어주셔서 감사합니다. test라는 토픽은 ReplicaFactor가 1이고 insync가 2인 상태입니다. 저는 이 설정이 에러가 안터지는것도 왜인지 궁금했습니다. 복제본의 갯수가 insync replica숫자보다 낮으면 insync 파티션갯수가 워터마크 복제 요구치보다 낮을텐데 그럼 해당 토픽에 들어간 데이터는 영영 볼수없는건가 라고 생각했기 때문입니다. 그래도 정상적으로 consume할수있는것은 카프카가 내부에서 파티션갯수와 insync갯수의 max값을 비교하는 로직을 통해 조정해서 작동하고있는것으로 생각해도 괜찮을까요?