AMQP 0-9-1 (Advanced Message Queuing Protocol)
메세지는 exchange되기 위해 publish됩니다. Exchange 이후에 룰(이를 binding이라고 부릅니다.)에 의해 큐로 메세지 카피들이 분산됩니다.
네트워크와 애플리케이션을 완전히 신뢰할 수 없으므로, amqp 0-9-1
모델은 메세지 acknowledgements
를 갖고 있습니다.
Exchange는 메세지가 어디로 갈 지에 대한 AMQP 0-9-1
의 요소입니다. exchange는 메세지가 0 혹은 그 이상의 큐로 라우팅되게 합니다.
이 알고리즘은 exchange type에 의존하고 이 규칙을 binding이라고 부릅니다.
Exchange type | Default pre-declared names |
---|---|
Direct | (Empty string) or amq.direct |
Fanout | amq.fanout |
Topic | amq.topic |
Headers | amq.match (and amq.headers in RabbitMQ) |
exchange는 몇개의 속성들과 함께 정의됩니다. 중요한 속성들을 보자면:
Exchange는 durable 혹은 transient 합니다. 이는 위에서 언급된 Durability
와 연관되어 있습니다.
만약 durable
하다면 exchange는 브로커가 재시작되어도 생존하지만, transient
(순간적인)라면 그렇지 않습니다(브로커가 다시 온라인 상태가 되면 재선언이 필요해집니다).
모든 경우에서 exchange가 durable
로 선언될 필요는 없습니다.
exchange 기본값은 direct exchange입니다.
단순한 애플리케이션에 매우 유용한 특별한 속성이 있습니다: 모든 큐는 생성될 때마다 큐 이름과 동일한 routing key가 바운딩됩니다.
예를 들어서, “search-indexing-online”이라는 큐를 선언했다고 합시다. AMQP 0-9-1
브로커는 default exchange로 “search-indexing-online”이라는 값으로 routing key를 바운딩할 것 입니다. (혹은 문맥상 binding key로 불릴 수도 있습니다.)