分布式系統之訊息中介軟體rabbitmq

2021-09-02 16:27:47 字數 1060 閱讀 8095

既然要做分布式系統,就不得不說分布式訊息通訊系統。分布式系統的基礎是各個分布式單元能夠以各種方式互相通訊,分布式訊息中介軟體比較有名的開源實現有rabbitmq,zeromq(庫),activemq等,本篇先考察一下著名的訊息中介軟體rabbitmq

rabbitmq在2023年4月被springsource收購,後者是vmware的乙個部門,就是說,rabbitmq目前已經是vmware的了。

rabbitmq使用erlang語言編寫,實現了amqp協議。amqp協議在04年中~06年中由摩根大通集團和imatix公司開發,後來由amqp工作組維護。最初用於金融領域,後來慢慢成為乙個通用的協議。與jms不同,amqp定義了詳細的訊息格式,因此任何語言開發的軟體都可以與其他語言開發的軟體進行互通,只要他們的訊息格式一致即可。

amqp協議定義了message broker作為訊息伺服器,定義了user作為訊息伺服器的使用者(producer或consumer),user和message broker之間可以建立物理連線connection,在connection上,可以建立虛擬連線channel。基於channel,可以宣告(declare)交換機exchange,佇列queue,可以在exchange和queue間建立繫結binding,message由生產者傳送到exchange,然後按照規則傳送給binding到該exchange的queue。message分為頭部和訊息體,其中頭部包含了routing-key,而binding也有routing-key的屬性,不過這個binding的這個屬性可以是乙個或多個明確的routing-key,也可以是乙個或多個pattern。

exchange和queue之間可以有多個binding,乙個exchange可以bind多個queue,乙個queue也可以bind到多個exchange。這裡exchange相當於硬體的交換機,但queue不是連線,而是乙個快取,binding是queue和exchange之間的關係。雖然exchange和queue之間可以有多個binding,但不會導致乙個訊息會從exchange重**送給同乙個queue,乙個訊息從乙個exchange最多傳送一次給乙個queue。

binding實際上是exchange上的一條配置規則。

分布式之訊息中介軟體

目錄 1.訊息中介軟體概述 2.訊息中介軟體使用場景 3.訊息中介軟體原理 4.訊息中介軟體傳遞模式 4.1點對點模式 ptp 4.2發布 訂閱模型 pub sub 訊息中介軟體利用高效可靠的訊息傳遞機制進行平台無關的資料交流,並基於資料通訊來進行分布式系統的整合。通過提供訊息傳遞和訊息排隊模型,它...

分布式之訊息中介軟體

目錄 訊息中介軟體利用高效可靠的訊息傳遞機制進行平台無關的資料交流,並基於資料通訊來進行分布式系統的整合。通過提供訊息傳遞和訊息排隊模型,它可以在分布式環境下擴充套件程序間的通訊。訊息中介軟體就是用在訊息佇列伺服器中用於過濾 區分和根據規則進行 的程式。目前在生產環境,使用較多的訊息中介軟體有act...

分布式訊息中介軟體

一 分布式訊息中介軟體入門 訊息中介軟體主要實現分布式系統中解耦 非同步訊息 流量銷鋒 日誌處理等場景。現在生產中用得最多的訊息佇列有 activemq,rabbitmq,kafka,rocketmq 等。jms 規範 類似於 jdbc 的一套介面規範,但不同的是他是面向的訊息服務,提供一套標準 a...