inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Consumer에서 여러 개의 Topic 읽기

하나의 컨슈머가 서로 다른 토픽을 subscribe하면

634

이화평

작성한 질문수 11

0

강의 예시로 들어주신 것 처럼

하나의 컨슈머가 서로 다른 토픽을 subscribe해서 서로 다른 메시지를 취합(?)해서 새로운 데이터를 생성하여 DB에 적재하거나 다른 토픽으로 전송하신다고 하셨는데요.

A 토픽에 들어오는 메시지와 B 토픽에 들어오는 메시지의 짝(?)을 어떻게 맞출 수 있나요...?

예시처럼 A 토픽에서 poll한 메시지의 order-id 는 1인데, B토픽에서 poll한 메시지의 order-id는 2인 경우에는 취합할 수 없는 데이터이기 때문에, B토픽에서 poll하는 메시지의 order-id가 1이 나올 때까지 어떠한 조치를 취해야 하지 않을까라는 생각이 들었습니다.

데이터 엔지니어링 Kafka

답변 2

0

kathleenmeyers88

To concatenate messages of different topics, you need to find a common attribute or identifier that can be used to match the messages. In the example you above, if messages from topics A and B are related to the same order, you can use the order ID as a common attribute.
sonic exe

0

권 철민

안녕하십니까,

카프카 Consumer가 여러개의 Topic을 읽을 때는 개별 Topic에 순차적으로 들어오는 메시지를 읽기 때문에 말씀하신 방법으로 짝을 맞출 수는 없습니다.

카프카는 대용량 메시지를 처리하기 위해 설계되었고, 이를 위해 기본적으로 비동기로 메시지 처리를 합니다. 그리고 Consumer가 메시지를 처리하는 순서는 Topic에 쌓여있는 메시지의 순서, 즉 offset 순으로 메시지를 처리합니다.

따라서 서로 다른 Topic 이지만 하나의 테이블 또는 여러 다른 테이블이더라도 order id 의 순서가 시간적으로 정확히 동기화가 맞춰져서 DB에 입력되고, DB가 이를 업무적으로 반영해야 한다면 하나의 Topic에서만 순차적으로 해당 메시지들이 시간 순서대로 입력되어야 합니다.

물론 2개의 개별 topic에 order id 순서대로 각각 잘 쪼개져서 들어간다면 기본적으로는 순차적으로 DB의 각 테이블에 입력될 수는 있지만 이를 100% 보장할 수는 없습니다.

감사합니다.

강의가 부족한 것이 아니라, 누구나 쉽게 이해할 수 있도록 매우 단순하게 설계된 것입니다.

0

22

0

소스 코드 자료를 다운을 받았는데 압축 파일에 문제가 생긴 것 같습니다.

0

674

1

application.yml args에러발생이유

3

713

1

mac os ) zip 파일 dataframe 오류

0

666

1

카프카 ISR 개념 부분 질문

0

484

1

스프링 시큐리티 문의 (webSecurityConfigurerAdapter 취소선)

0

1845

1

catalog 테이블 자동 create-drop 가 안됩니다.

0

1029

2

카프카 커넥터를 두가지 사용하는 이유

0

904

1

H2 최신 버전 사용 시 server mode 사용에 따른 application.yml 파일 설정(테이블은 생성됐는데 data.sql INSERT 안될 시 참고)

13

1275

2

멀티브로커에서 consumer 사용하기

0

636

1

멀티 브로커에서 브로커 중지되는 문제

0

507

1

클러스터 환경구성시 replication factor 1일때 메시지전송 관련 질문

0

446

1

테스트 환경 관련 질문입니다.

1

543

1

카프카 서버기동에서 질문있습니다.

0

316

1

Sticky, RoundRobin 설정

0

528

1

안녕하세요, at Least once 관련 질문이 있습니다!

0

271

1

Consumer group 이 지정된 consumer의 auto.offset.reset

1

766

1

다음 강의 오픈 일정이 궁금합니다!

0

344

1

카프카와 주키퍼랑 통신할때는 브로커 서버의 어느 컴포넌트를 사용해 통신하나요?

0

351

1

만약에 동시에 브로커 서버가 주키퍼한테 리더를 요청하면 누가 리더가 되나요?

0

497

1

동기 Commit과 ConsumerNetworkClient의 Poll() 관련 질문드립니다!

0

347

1

NameServer를 찾을 수가 없다고 합니다!

0

275

1

NoCommit의 경우 Offset을 어떻게 알고 요청을 하게 될까요?

0

508

1

virtual box 네트워크 설정 영상이 없어요.

0

279

1