rabbitmq是開源**和佇列伺服器,通過普通協議在不同的應用之間共享資料,使用erlang編寫(erlang進行資料交換的效能很好,
和原生socket
一樣好的延遲響應效果),基於amqp協議
amqp高階訊息佇列協議:具有現代特徵的二進位制協議,和jms有點像,模型如下:
amqp核心概念
1、server:broker,接受client連線,實現amqp實體服務
2、connection:應用程式和broker的網路連線
3、channel:網路通道,讀寫都是在channel中進行(nio的概念),包括對mq進行的一些操作(例如clear queue等)都是在channel中進行,
客戶端可建立多個channel,每個channel代表乙個會話任務
4、message:由properties(有訊息優先順序、延遲等特性)和body(訊息內容)組成
5、virtual host:用於訊息隔離(類似redis 16個db這種概念),最上層的訊息路由,乙個包含若干exchange和queue,同乙個裡面exchange
和queue的名稱不能存在相同的。
6、exchange:routing and filter
7、binding:把exchange和queue進行binding
8、routing key:路由規則
9、queue:物理上儲存訊息
滴滴、美團、頭條、去哪兒。。。。都再使用rabbitmq
原因:
1、開源、效能優秀、能保證穩定性,提供可靠性訊息投遞模式confirm、返回模式return,和springamqp完美整合、api豐富
2、集群模式豐富,表示式配置,ha模式,映象佇列模式
3、保證資料不丟失的前提下做到高可靠性、高可用性
1、exchange:
如果不指定exchange的話,rabbitmq預設使用,(amqp default)注意一下,需要將routing key等於queue name相同
2、name、type:
fanout(效率最好,不需要routing key,routing key如何設定都可以)、direct、topic(#乙個或多個,*乙個)、headers
3、auto delete:
當最後乙個binding到exchange的queue刪除之後,自動刪除該exchange
4、binding:
exchange和queue之間的連線關係,exchange之間也可以binding
5、queue:
實際物理上儲存訊息的
6、durability:
是否持久化,durable:是,即使伺服器重啟,這個佇列也不會消失,transient:否
7、exclusive:
這個queue只能由乙個exchange監聽restricted to this connection,使用場景:順序消費
8、message:
由properties(有訊息優先順序、延遲等特性)和body(payload訊息內容)組成
,還有content_type、content_encoding、priority
correlation_id、reply_to、expiration、message_id等屬性
需要注意:注意rabbitmq和erlang版本的對應,而且伺服器的host name不要瞎改,當初rabbitmq一直啟動報錯,就是這個原因,搞了兩天,真的
蛋疼,
先要確定erlang安裝成功,然後按照rabbitmq
瀏覽器視覺化工具:rabbitmq-plugins enable rabbitmq_management 使用者名稱、密碼:guest guest
rabbitMQ系列2 rabbitMQ快速入門
一 簡介 以熟悉的電商場景為例,如果商品服務和訂單服務是兩個不同的微服務,在下單的過程中訂單服務需要呼叫商品服務進行扣庫存操作。按照傳統的方式,下單過程要等到呼叫完畢之後才能返回下單成功,如果網路產生波動等原因使得商品服務扣庫存延遲或者失敗,會帶來較差的使用者體驗,如果在高併發的場景下,這樣的處理顯...
RabbitMQ學習筆記(二) 基礎概念
queue 佇列 是rabbitmq的內部物件,用於訊息的消費,用下圖表示。rabbitmq中的訊息都只能儲存在queue中,生產者 下圖中的p 生產訊息並最終投遞到queue中,消費者 下圖中的c 可以從queue中獲取訊息並消費。多個消費者可以訂閱同乙個queue,這時queue中的訊息會被平均...
Kong系列(二) Kong元件使用
在真正開始使用之前,先了解了一下在kong中的所用元件,並對他們的關係做了乙個初步了解,下面就將一下kong中常用的元件簡單做下了解 service service 顧名思義,就是我們自己定義的上游服務,通過kong匹配到相應的請求要 的地方 service 可以與下面的route進行關聯,乙個se...