CLOUD/OpenSource

[Kafka] 게시글 등록 현황 실시간으로 확인 하기

alsruds 2023. 3. 21. 17:28

[ 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 서버를 이용한 메세지 전송

 

[Kafka] REST Proxy 서버를 이용한 메세지 전송

[ Broker 서버 준비 ] 2023.03.20 - [분류 전체보기] - [Kafka] Broker 서버를 이용한 Producer&Consumer 메세지 전송 [Kafka] Broker 서버를 이용한 Producer&Consumer 메세지 전송 [ 가상머신 준비 ] ◎ CentOS 8 : 3대 → Produc

alsrudalsrudalsrud.tistory.com

》 코드 수정

# 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 메세지 전송

 

[Kafka] Broker 서버를 이용한 Producer&Consumer 메세지 전송

[ 가상머신 준비 ] ◎ CentOS 8 : 3대 → Producer(200.200.200.150) → Consumer(200.200.200.151) → Broker(200.200.200.152) ● 설치 # jdk 설치 yum -y install java-1.8.0-openjdk-devel.x86_64 # kafka 설치 wget https://downloads.apache.org/kafk

alsrudalsrudalsrud.tistory.com

 

 

☞ 확인하기 ☜

Consumer 코드 실행 게시글 등록 게시글 현황 페이지 확인

user09 가 Board_id 가 31 인 게시글을 등록!

 

 

※ 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>