訊息中介軟體RabbitMQ

2021-09-26 05:18:33 字數 1278 閱讀 9286

1非同步:不等待

2解耦:任務的序列變並行

3流量削峰:大任務量負載均衡

rabbitmq,kafka,flume

amqp: advanced message queue protocol

0 訊息  分為訊息頭和訊息體,訊息頭包含:路由鍵 routing-key,優先順序priority,delivery-mode

1 生產者 producer 

2 broker 主機 可以有多個vhost

3 vhost 虛擬主機,可理解為乙個小型的rabbitmq伺服器,是一組交換機,佇列,有相同的身份標識

4 交換機 exchange 用於區分type型別,(訊息發布型別)將訊息傳送到不同的佇列裡

5 佇列,queue 訊息的載體 和交換機之間路由規則進行繫結,這裡有乙個設定binding-key

6 通道 消費者和佇列間通訊是通過tcp連線,但頻繁連線效能差,就有了這個虛擬通道,它對應的是乙個執行緒,更省資源

7 消費者

參考:訊息如何正確的傳送到對應的佇列中呢?

訊息本身有乙個routing-key的標識,佇列和交換機之間也有乙個binding-key的標識

1 direct發布訂閱模式:routing-key=binding-key  完全匹配,單播

2 fanout廣播模式: 交換機的型別是fanout,發到這個交換機上的訊息,就直接**到跟這個交換機關聯的所有佇列裡

3topic主題模式:此時的binding-key是乙個模式  ,例如 usa.#,而 routing-key是乙個具體的值 如usa.news, 這樣就建立了模糊規則匹配

4 headers模式:只是標識放在了訊息頭中,其他和direct相同

這裡的繫結,就是把佇列和交換機做了繫結,指定了binding-key

對於生產者,通過指定交換機,routing-key,就確定了訊息被傳送到何處,哪個佇列中

確認又分為: (ack確認機制,消費者處理完訊息後,通知mq,mq才將其從佇列中刪除)

手動確認

自動確認

注意:如果mq收不到確認反饋,會再次將訊息放到佇列裡,重**送,嚴重的話會記憶體洩漏

不論是生產者傳送訊息,還是消費者處理訊息,都存在不確定性,意外失敗的情況,如何又要可靠,又要效能,兼顧呢?

1事務開啟--提交/回滾,

2 confirm確認

這兩種方式都是對chnnel資訊進行相應的設定,等待,完成 監聽

訊息中介軟體RabbitMQ

rabbitmq 是用erlang實現的乙個高併發高可靠amqp訊息佇列伺服器。rabbitmq 依賴於erlang環境,所以先要安裝erlang 執行 otp win32 r16b03.exe 再安裝rabbitmq 執行 rabbitmq server 3.2.3.exe 新增環境變數 rabb...

訊息中介軟體RabbitMQ

1.1.為什麼使用訊息佇列 應用場景 常見的訊息中介軟體有?用於實現分布式系統模組與模組之間的訊息通訊。原理 原理就是生產者生產訊息,把訊息傳送給activemq。activemq接收到訊息,然後檢視有多少個消費者,然後把訊息 給消費者,此過程中生產者無需參與。消費者接收到訊息後做相應的處理和生產者...

rabbitMq 訊息中介軟體

rabbitmq簡介 rabbitmq作為乙個訊息中介軟體,其雖然是用erlang 語言編寫的,其能夠勝任每秒十萬級別的資料讀與寫。可以說,效率是特別的高。訊息中介軟體,一般分為訊息提供者,訊息消費者,訊息佇列,交換機,繫結這幾個元件。訊息提供者 主要負責訊息的傳送到中介軟體伺服器中的佇列了,等待對...