Python - Kafka Producer 구성

2021. 7. 21. 17:14Python

kafka에 message를 보내기 위해서 파이썬으로 프로듀서를 구성해보았다.

 

우선먼저 필요사항

 

  1. Python
  2. kafka-python 

그리하여 먼저 Kafak-python 라이브러리를 설치한다.

 

!pip install kafka-python

아주 가뿐하게 설치를 하고 나면 이제야 비로서 코드를 한번 알아보도록 하자.

 

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')
for _ in range(100):
	producer.send('foobar', b'some_message_bytes')

세상 너무 간단하다.. 정말 이것으로 우리가 원하는 메세지를 생성할 수 있나?

실제로 가능하지만.. 너무 기능이 없어서 여러가지 기능을 추가해 본다.

 

Producer를 구성할때 여러가지 옵션들을 고려할 수 있는데 아래와 같이 구성되어 있으니 참고해서 추가한다.

kafka-python Producer 옵션

 

위의 옵션중 필요한 사항을 적용하여 구성된 프로듀서이다.

producer = KafkaProducer(acks=0, compression_type='gzip', bootstrap_servers=['kafka:9092']\
                         ,value_serializer=lambda x: dumps(x).encode('utf-8'))

for topic in kafka_dict:
    producer.send('topic1', topic)

중요하게 작용하는 몇가지만 알아보자

  • compression_type : 메세지 압축을 진행하여 데이터의 크기가 크다면 아주 효율적이다.
  • bootstrap_server : 꼭꼭 필요하다 Localhost 또는 Docker를 이용하고 있다면 Container의 이름과 Port를 입력한다.
  • value_serializer : Lambda를 이용하여 보낼 메세지의 전처리를 할 수 있다.
    • json 라이브러리의 dumps를 활용하여 문자열을 json타입으로 변환하고 utf-8 형식으로 인코딩 된 데이터를 보냈다.
  • producer.send : 이렇게 만든 문자열 혹은 JSON을 Kafka Broker Topic으로 전송한다. 튜플 구조 안에 'topic1'은 Topic의 이름이고 뒤는 보낼 데이터가 들어간다.
  • ex) ( <<Topic Name>>, <<Send Data>>)

 

이렇게 프로듀서 구성이 완료 되었다. 

 

부디 잘 활용하기를 바라며 글 마친다.