當前各種應用大量使用非同步訊息模型,並隨之產生眾多訊息中介軟體產品及協議,標準的不一致使應用與中介軟體之間的耦合限制產品的選擇,並增加維護成本。amqp是乙個提供統一訊息服務的應用層標準協議,基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同開發語言等條件的限制。
當然這種降低耦合的機制是基於與上層產品,語言無關的協議。amqp協議是一種二進位制協議,提供客戶端應用與訊息中介軟體之間非同步、安全、高效地互動。從整體來看,amqp協議可劃分為三層:
這種分層架構類似於osi網路協議,可替換各層實現而不影響與其它層的互動。amqp定義了合適的伺服器端域模型,用於規範伺服器的行為(amqp伺服器端可稱為broker)。在這裡model層決定這些基本域模型所產生的行為,這種行為在amqp中用」command」表示,在後文中會著重來分析這些域模型。session層定義客戶端與broker之間的通訊(通訊雙方都是乙個peer,可互稱做partner),為command的可靠傳輸提供保障。transport層專注於資料傳送,並與session保持互動,接受上層的資料,組裝成二進位製流,傳送到receiver後再解析資料,交付給session層。session層需要transport層完成網路異常情況的匯報,順序傳送command等工作。
上面是對amqp協議的大致說明。下面會以我們對訊息服務的需求來理解amqp所提供的域模型。訊息中介軟體的主要功能是訊息的路由(routing)和快取(buffering)。在amqp中提供類似功能的兩種域模型:exchange 和 message queue。
理解 AMQP協議
當前各種應用大量使用非同步訊息模型,並隨之產生眾多訊息中介軟體產品及協議,標準的不一致使應用與中介軟體之間的耦合限制產品的選擇,並增加維護成本。amqp是乙個提供統一訊息服務的應用層標準協議,基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端 中介軟體不同產品,不同開發語言等條件的限制。當然這...
熟悉RabbitMQ與AMQP協議
1.訊息佇列的簡介 rabbitmq採用erlang語言開發。erlang語言由ericson設計,專門為開發concurrent和distribution系統的一種語言,在電信領域使用廣泛。otp open telecom platform 作為erlang語言的一部分,包含了很多基於erlang...
RabbitMQ與AMQP協議詳解
生產者傳送訊息到broker server rabbitmq 在broker內部,使用者建立exchange queue,通過binding規則將兩者聯絡在一起。exchange分發訊息,根據型別 binding的不同分發策略有區別。訊息最後來到queue中,等待消費者取走 exchange有多種型...