반응형
1. 시작
Python 으로 Kafka Consumer를 개발하던중, Producer에서 데이터를 보내면 Consumer에 2가지 데이터가 온다
- Producer가 보낸 데이터
- kafka key=b'\x00\x00\x00\x01', value='\x00\x00\x00\x00\x00\x00' .. 와 같은 해더가 없는 바이너리 데이터
처음에는 해더가 있냐 없냐로 그냥 데이터를 분기했지만 너무 거슬렸다.
원인은 Producer에서 Transactions 옵션 때문이었다.
2. Transactions?
Kafka로 데이터를 보내는 데 문제가 발생했을 때
Transactions을 사용하지 않을경우 이미 Kafka로 전송된 메시지는 계속해서 Consumer에게 전달된다.
Transactions을 사용하면 Kafka 트랜잭션이 롤백되어 Consumer가 해당 메시지를 사용할 수 없게 됩니다.
즉, 데이터를 전달할때 재전송할지 그냥 보냈다고 처리할지 결정하는것같다.
3. 해결방법?
해당 해결방법은 2가지가 있다.
- Producer에서 Transactions 을 사용하지 않는다.
- Python에서 Transactions에 대한 처리를 한다.
나는 시간이 없기 때문에 그냥 Transactions을 사용하지 않기로 한다.(문제가 생기면 데이터가 유실될 가능성이 있다.)
반응형
'Kafka' 카테고리의 다른 글
[Docker][Kafka GUI] Kafka를 GUI로 더 쉽게 관리하기 (0) | 2023.08.06 |
---|---|
[Docker] Kafka , Zookeeper 설치 (0) | 2023.05.24 |