[ Django - Web Server ]
》 Producer 역할
● urls.py
path('postnow/', board.views.posting_now)
● views.py
# 게시글 등록할 때
def posting(request):
contents = request.POST.get('contents',None)
bimg = request.FILES['image']
post = Board()
post.contents = contents
post.bimg = bimg
post.writer = request.session['user_id']
post.save()
# DB 저장과 동시에 메세지 발행 (토픽메세지 - kafka)
producer = KafkaProducer(
acks=0,
compression_type='gzip',
bootstrap_servers=['[proxy ip]:9092'],
value_serializer=lambda x: dumps(x).encode('utf-8')
)
data = {'message': post.id, 'user': post.writer}
producer.send('WEB_BOARD_REGISTER', value=data)
producer.flush()
return redirect('/postnow/')
# 게시글 등록 실시간 현황 확인
def posting_now(request):
result = requests.post("http://[proxy ip]:8082/consumers/"+request.session['user_id'],
data='{"name": "'+request.session['user_id']+'_instance", "format": "json", "auto.offset.reset": "earliest"}',
headers={'Content-Type': 'application/vnd.kafka.v2+json'})
result = requests.post("http://[proxy ip]:8082/consumers/"+request.session['user_id']+"/instances/"+request.session['user_id']+"_instance/subscription",
data='{"topics":["WEB_BOARD_REGISTER"]}',
headers={'Content-Type': 'application/vnd.kafka.v2+json'})
return render(request, 'pulling.html')
● pulling.html
2023.03.21 - [분류 전체보기] - [Kafka] REST Proxy 서버를 이용한 메세지 전송
》 코드 수정
# GET 요청 + 데이터 전달
httpRequest.open("GET", "http://[Proxy IP]:8082/consumers/{{request.session.user_id}}/instances/{{request.session.user_id}}_instance/records", true);
httpRequest.setRequestHeader("Accept", "application/vnd.kafka.json.v2+json");
httpRequest.send();
[ Django - Consumer ]
2023.03.20 - [분류 전체보기] - [Kafka] Broker 서버를 이용한 Producer&Consumer 메세지 전송
☞ 확인하기 ☜
》 Consumer 코드 실행 》 게시글 등록 》 게시글 현황 페이지 확인
※ pulling.html의 javascript 코드 실행 부분이 데이터가 등록되기 전에 데이터에 접근해 빈 데이터를 불러오기에 다른 script 를 사이에 넣어줌
<!DOCTYPE html>
...
...html code...
<script scr="https://code.jquery.com/jquery-3.4.1.min.js"></script> #상관없는 스크립트
<script type="text/javascript">
...
...js code...
</script>
</html>
'CLOUD > OpenSource' 카테고리의 다른 글
[ElasticSerach] 시작하기 (0) | 2023.03.22 |
---|---|
[Kafka] Zookeeper & Kafka Clustering (0) | 2023.03.22 |
[Kafka] REST Proxy 서버를 이용한 메세지 전송 (0) | 2023.03.21 |
[Kafka] 웹 브라우저 동작 시 Consumer 에 토픽 메세지 전송 (2) | 2023.03.20 |
[Kafka] Broker 서버를 이용한 Producer&Consumer 메세지 전송 (2) | 2023.03.20 |