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