[Kafka] Kafka - rest - django

이정훈·2023년 3월 21일
0

kafka

목록 보기
3/5
post-thumbnail
  • 장고를 통해 만든 페이지에서 글을 올리면 실시간으로 확인하고 싶다!
    예를 들면 실시간 주문내역들을 확인하는 것과 같다.

데이터 보내기

 producer = KafkaProducer(
            acks=0,
            compression_type='gzip', #gzip 형식으로 보내줄것이다.
            bootstrap_servers=['200.200.200.5:9092'], #broker에게
            value_serializer=lambda x: dumps(x).encode('utf-8')
        )

        data = {'message': request.user.username + ' 게시글 등록 완료'}
        producer.send('WEB_BOARD_REGISTER', value=data) # 토픽은 WEB_BOARD_REGISTER
        producer.flush()

  • 글을 등록하면서 Broker에게 WEB_BOARD_REGISTER 토픽으로 게시글 등록완료 라고 보내 주는 것이다.
    `

데이터 받아보기

result = requests.post("http://200.200.200.8:8082/consumers/" + str(request.user.username), # 그룹ID 설정
	data='{"name": "'+str(request.user.username)+'_instance", "format": "json", 
    "auto.offset.reset": "earliest"}', # 인스턴스 이름 설정
	headers={'Content-Type': 'application/vnd.kafka.v2+json'})
result = requests.post("http://200.200.200.8:8082/consumers/"+str(request.user.username)+
	"/instances/"+str(request.user.username)+"_instance/subscription",
	data='{"topics":["WEB_BOARD_REGISTER"]}', # 토픽 설정
	headers={'Content-Type': 'application/vnd.kafka.v2+json'})

  • 서로 실행하면 실시간으로 글이 올라간 것을 확인하는 게시판을 볼 수 있다.
  • 중간중간 데이터가 많은지 consumer가 자료를 못받아 올 때 가 있었는데 이때, 새로운 인스턴스값과 그룹ID 그리고 토픽을 변경해서 해줬더니 잘 작동했던 것을 확인 했다.
profile
싱숭생숭늉

0개의 댓글