래빗MQ 메시지 딜리버리 확인 메커니즘 - 소비자에서 브로커로
소비자 acknowledgements, 발행자 confirms 프로토콜 메소드는 성공적으로 진행되었는지 보장되지 않기 때문에, 발행자와 소비자는 딜리버리와 처리 확인을 위한 메커니즘이 필요하다. 래빗MQ가 지원하는 몇몇 메시징 프로토콜은 이러한 특성을 제공한다. 소비자로부터의 딜리버리 처리 acknowledgements는 AMQP 0-9-1 용어로 알려져 있다.(소비자 -> 브로커) 발행자로 가는 브로커 acknowledgements는 발행자 확인이라고 부르는 프로토콜 확장이다.(브로커 -> 발행자) 두개의 특성은 같은 아이디어로부터 나왔고, TCP로부터 영감을 받았다. 이것들은 퍼블리시에서 래빗MQ노드로, 래빗MQ노드에서 소비자로의 reliable한 딜리버리를 위해 필수적이다. 1. (consumer) delivery acknowledgements 래빗MQ가 소비자로 메시지를 보낼때, 언제를 메시지가 성공적으로 보내졌는지로 할지 알 필요가 있다. 이런 로직은 시스템에 따라 다르다. 그러니까 어플리케이션에서 결정하는게 우선적이다. AMQP 0-9-1에서는 소비자가 basic.consume 메소드를 사용하여 등록하거나 메시지가 basic.get 메소드로 fetch되었을때로 한다. 2. 딜리버리 구분자 : delivery tags 다른 주제를 보기 앞서, 어떻게 딜리버리가 구분되는지 설명하는것이 중요하다.(그리고 acknowledgements는 각자의 딜리버리이다.) 소비자가 등록되었을때, 메시지는 basic.deliver 메소드를 사용해서 래빗MQ에 의해서 전달된다.(푸쉬된다.) 이 메소드는 채널 상에서 딜리버리를 유일하게 구분하는 delivery tag를 가지고 온다. 그러니까 딜러버리의 scope은 채널이다. 3. 딜러버리 태그는 단조롭게 증가하는 양의 정수이고, 클라이언트 라이브러리와 같은 것에 의해서 표시된다. 딜리버리를 확인(acknowledge)하는 클라이언트 라이브러리 메소드는 delivery...