백엔드 Back-end/메시지 큐 Message Queue

Q. 래빗엠큐RabbitMQ에서 ack의 의미는?

Tap to restart 2023. 3. 6. 02:00
반응형

A. acknowledgment 확인, 인지란 뜻이다. 

아래 출처를 보면 ack(nowledgement)란 표현을 볼 수 있다. 발음은 애크라고 읽는 것 같다.
 

In order to make sure a message is never lost, RabbitMQ supports message acknowledgments. An ack(nowledgement) is sent back by the consumer to tell RabbitMQ that a particular message had been received, processed and that RabbitMQ is free to delete it.
출처: Message acknowledgment

 
파이썬 pika 팩키지를 활용할 경우 auto_ack=True로 하면, 메시지를 한 번 읽고 나서는 다시 읽을 수 없다. auto_ack=False로 할 경우 메시지를 읽되 남겨 놓게 된다. 그래서 또 읽을 수 있다.
 
Q. 파이썬으로 래빗엠큐RabbitMQ 메시지를 보내고 받고 싶다면? 글을 보고 그대로 send.py 실행까지 따라하자.
receive.py에서 auto_ack=True에서 False로 아래처럼 변경해보자.

    channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=False)

그리고 receive.py를 실행하자.

 

Ready 1, Unacked 0, Total 1에서 Ready 0, Unacked 1, Total 1로 변화되는 것을 확인할 수 있다.
다시 receive.py를 실행하면 같은 메시지를 또 받을 수 있다.

 

반응형