- 장고를 통해 만든 페이지에서 글을 올리면 실시간으로 확인하고 싶다!
예를 들면 실시간 주문내역들을 확인하는 것과 같다.
데이터 보내기
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 그리고 토픽을 변경해서 해줬더니 잘 작동했던 것을 확인 했다.