- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MQ(Message Queue)介紹和使用
MQ(Message Queue)的介紹和使用
----------- A introduction and practice of message queue ------------
李劍
Blog:?/hustlijian
Email:?hustlijian@
?
什麼是訊息佇列?
在電腦科學中,訊息佇列(Message queue)是一種進程間通信或同一進程的不同執行緒間的通信方式。[1]
消息發送後,可以立即返回,由消息系統來確保消息的可靠傳遞,消息作為應用間的一種通信方式,能夠有效的降低各模組間的耦合性,提升分散式協作的效率。
發佈者只管把消息發佈到MQ中而不管誰會來取,同樣消息使用者只管從MQ取消息而不管是誰發佈的。這樣發佈者和使用者都不用知道對方的存在。
為什麼要再講訊息佇列?
李白學長講的只是linux系統中的訊息佇列。
分散式系統中訊息佇列的重要性。
學習新東西,==_==
BladeStore的測試,真是好糾結呀!!!
每天就在代碼中跳來跳去
一個多月,就是把設定檔中的一個選項0改為1
訊息佇列的存在形式
系統內部,或者軟體內部:
linux下的消息機制:見李白學長的介紹。
windows下的消息機制[2]: 如Win32實例
PS. windows下Message Queues?VS?Message Queuing[3]
不同電腦,多個應用程式,多種作業系統:
有一些優化,如系統故障中”message” 不會丟失。
例如:IBMs WebSphere MQ , Oracle Advanced Queuing (AQ) ,Java standard called Java Message Service,
作為服務程式: 如StormMQ、IronMQ等
軟體中介軟體:MOM(Message-oriented middleware)[4]
有很多有名的開源軟體,如Apache ActiveMQ,RabbitMQ
訊息佇列標準
新近有了三個標準:
Advanced Message Queuing Protocol,高級訊息佇列協議
MQTT(MQ Telemetry Transport),
Streaming Text Oriented Messaging Protocol
訊息佇列的架構
多個生產者可以給一個訊息佇列發送消息
多個消費者可以從一個訊息佇列中獲得消息
訊息佇列的設計可以保證一個消息只發送一次
消費者不可達時,消息也可以到達消費者[06]
訊息佇列的模型
分散式消息的常用傳輸模式:點對點消息傳送(P2P)[5]
訊息佇列的模型
分散式消息的常用傳輸模式:訂閱發佈(Pub/Sub)模式[5]
RabbitMQ的介紹
RabbitMQ的架構原理圖
RabbitMQ的介紹
幾個概念說明:
Broker:簡單來說就是訊息佇列伺服器實體。
Exchange:消息交換機,它指定消息按什麼規則,路由到哪個佇列。
Queue:訊息佇列載體,每個消息都會被投入到一個或多個佇列。
Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。
Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
RabbitMQ的介紹
幾個概念說明:
vhost:虛擬主機,一個broker裡可以開設多個vhost,用作不同用戶的許可權分離。
producer:消息生產者,就是投遞消息的程式。
consumer:消息消費者,就是接受消息的程式。
channel:消息通道,在用戶端的每個連接裡,可建立多個channel,每個channel代表一個會話任務。
RabbitMQ的介紹
RabbitMQ的使用原理圖
RabbitMQ的介紹
訊息佇列的使用過程
用戶端連接到訊息佇列伺服器,打開一個channel。
用戶端聲明一個exchange,並設置相關屬性。
用戶端聲明一個queue,並設置相關屬性。
用戶端使用routing key,在exchange和queue之間建立好綁定關係。
用戶端投遞消息到exchange。
接收方在接收時也是獲取connection,接著獲取channel,然後指定一個Queue直接到它關心的Queue上取消息,它對Exchange,RoutingKey及如何binding都不關心.
RabbitMQ的介紹
RabbitMQ的優點
可靠性:包括持久性保存,送達確認,發佈確認,和高可用性(HA)。
彈性路由選擇:自己設置exchange選項
集群:多個server可以集群為一個邏輯broker
高可用性佇列:佇列在多個server中備份
多用戶端:支援多種語言
圖形管理:監測broker資訊
跟蹤支持:可以跟蹤系統運行狀態
訊息佇列實例比較
圖中顯示的是發
原创力文档


文档评论(0)