天天看點

關于RabbitMQ關于RabbitMQ

關于RabbitMQ

RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue )的開源實作。AMQP 的出現其實也是應了廣大人民群衆的需求,雖然在同步消息通訊的世界裡有很多公開标準(如 COBAR的 IIOP ,或者是 SOAP 等),但是在異步消息進行中卻不是這樣,隻有大企業有一些商業實作(如微軟的 MSMQ ,IBM 的 Websphere MQ 等),是以,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等聯合制定了 AMQP 的公開标準。

RabbitMQ是由RabbitMQ Technologies Ltd開發并且提供商業支援的。該公司在2010年4月被SpringSource(VMWare的一個部門)收購。在2013年5月被并入Pivotal。其實VMWare,Pivotal和EMC本質上是一家的。不同的是VMWare是獨立上市子公司,而Pivotal是整合了EMC的某些資源,現在并沒有上市。

RabbitMQ的官網是http://www.rabbitmq.com

百度百科amqp協定介紹https://baike.baidu.com/item/AMQP/8354716?fr=aladdin

注意:RabbitMQ是采用erlang語言開發的,是以必須有erlang環境才可以運作

 Erlang  (高并發應用) 

Erlang程式設計語言最初目的是進行大型電信交換裝置的軟體開發,是一種适用于大規模并行處理環境的高可靠性程式設計語言。随着多核處理器技術的日漸普及,以及網際網路、雲計算等技術的發展,該語言的應用範圍也有逐漸擴大之勢。

百度百科介紹:https://baike.baidu.com/item/Erlang%E8%AF%AD%E8%A8%80/20864044?fr=aladdin

初衷理念實作抗高并發語言

關于RabbitMQ關于RabbitMQ

不同的項目 不同的 路徑,獨立的virtualhost,互相進行隔離:  用戶端連接配接時候需要指定virtual host位址 。

更加解耦 互相進行隔離  類似于每個項目都有不同的資料庫一樣

關于RabbitMQ關于RabbitMQ

添加virtual host

關于RabbitMQ關于RabbitMQ

指定某個使用者的 virtual host

關于RabbitMQ關于RabbitMQ
關于RabbitMQ關于RabbitMQ

AMQP(進階消息隊列協定)是一個異步消息傳遞所使用應用層協定規範,為面向消息中間件設計,基于此協定的用戶端與消息中間件可以無視消息來源傳遞消息,不受用戶端、消息中間件、不同的開發語言環境等條件的限制;

涉及概念解釋: 

Server(Broker):接收用戶端連接配接,實作AMQP協定的消息隊列和路由功能的程序;

Virtual Host:虛拟主機的概念,類似權限控制組,一個Virtual Host裡可以有多個Exchange和Queue。   

Exchange:交換機,接收生産者發送的消息,并根據Routing Key将消息路由到伺服器中的隊列Queue。

ExchangeType:交換機類型決定了路由消息行為,RabbitMQ中有三種類型Exchange,分别是fanout、direct、topic;

Message Queue:消息隊列,用于存儲還未被消費者消費的消息;

Message:由Header和body組成,Header是由生産者添加的各種屬性的集合,包括Message是否被持久化、優先級是多少、由哪個Message Queue接收等;body是真正需要發送的資料内容;

BindingKey:綁定關鍵字,将一個特定的Exchange和一個特定的Queue綁定起來。