[[PageOutline]] = 概念 = 為了能讓分散的電腦之間的應用程式能互相交換大量、非同步訊息,如果訊息接收端離線或暫時無法接收檔案,則系統必須能讓訊息在接收端上線時被接收。[[BR]] 系統需求: * 必須保證資料能完整到達。 * 傳送資訊必須保密。 * 不能佔用太多系統效能,且能持續擴充使用者和訊息。 * 系統必須夠穩定,且有足夠的容錯性保持資料傳輸。 * 系統必須提供監視及管理訊息工具及錯誤回報功能。 [[BR]][[BR]] = Advance Message Queuing Protocol (AMQP) = AMQP 是一個網路通訊協定,為了使 client 能透過一個中介軟體來互相傳遞訊息。 == AMQP MODEL 三種連接方式 == * Exchange: 由 publisher applications 接收訊息且訊息發送到 message queues,一般都是傳送訊息屬性及內容。 * Message queue: 用來儲存訊息,直到這些訊息能安全的被 client 處理。 * Binding: 定義 message queue 、 exchange 的關係,並且是供訊息傳送的準則。 == AMQP Protocol == || Model layer || messages、queues、exchanges、access control、transactions、data types || 定義給 application 使用的指令 || || Session layer || commands、control、excepions、confirmation、completion、replay、synchroniation || 提供 application 至 server 間可靠的傳輸指令、back with replay、synchroniation、err handling || || Transport layer || Data Encoding、Framing、Failure Detection、Multiplexing || 提供 framing、channel multiplexing、錯誤偵測、data representation、 || == AMQP MODEL == {{{ Server +-------------------------------+ | Virtual host | | +-----------------------+ | | | | | +-------------+ | | +-----------+ | | | Publisher | ----------> | Exchange | | | | Application | | | +-----+-----+ | | +-------------+ | | | | | | | | | | | | | Binding | | | | | | | | | \|/ | | +-------------+ | | +---------+ | | | Consumer | <----------- | Message | | | | Application | | | | Queue | | | +-------------+ | | +---------+ | | | +-----------------------+ | +-------------------------------+ }}} [[BR]][[BR]] = 專有名詞 = * [wiki:wade/messageQueue/technicalTerminology AMQP Technical Terminology]: AMQP 專有名詞 * MOM 「Message-Oriented Middleware」 訊息導向中介軟體:client/server 架構式的訊息傳遞。 * AMQP 「Advance Message Queuing Protocol」 * JMS 「Java Message Service」 = Reference = * http://www.openamq.org/ openAMQ * http://docs.sun.com/source/819-2224/index.html * http://en.wikipedia.org/wiki/Message_queue * http://jira.amqp.org/confluence/display/AMQP/Advanced+Message+Queuing+Protocol * [http://www.rabbitmq.com/resources/google-tech-talk-final/google.html RabbitMQ: An Open Source Messaging Broker That Just Works][http://www.rabbitmq.com/resources/google-tech-talk-final/alexis-google-rabbitmq-talk.pdf PDF] * [http://tw.youtube.com/watch?v=ZQogoEVXBSA YouTube 影片]