消息隊列 (1) mac安裝RabbitMQ

什麼是RabbitMQ?html

  RabbitMQ是由Erlang語言編寫的實現了高級消息隊列協議(AMQP)的開源消息代理軟件(也稱爲面向消息的中間件)。支持WIndows、Linux、MAC OS 操做系統和包括java、.net在內的多種編程語言。java

 

AMQP,即Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,分面向消息的中間件設計。基於此協議的客戶端與消息中間件可傳遞消息,並不受 客戶端/中間件 不一樣產品,不一樣的開發語言等條件的限制。git

 

RabbitMQ中的重要概念github

  Broker:經紀人。提供一種傳輸服務,維護一條從生產者到消費者的傳輸線路,保證消息數據能按照指定的方式傳輸。粗魯哦的能夠將圖中的RabbitMQ Server當作Broker。編程

  Exchange:消息交換機。指定消息按照什麼規則路由到哪一個隊列Queue。ruby

  Queue:消息隊列。消息的載體,每條消息都會被投送到一個或多個隊列中。服務器

  Binding:綁定。做用就是將Exchange和Queue按照某種路由規則綁定起來。app

  RoutingKey:路由關鍵字。Exchange根據RoutingKey進行消息傳遞。負載均衡

  Vhost:虛擬主機。一個Broker能夠有多個虛擬主機,用做不一樣用戶的權限分離。一個虛擬主機持有一組Exchange、Queue和Bingding。curl

  Producer:消息生產者。主要將消息投遞到對應的Exchange上面。通常是獨立的程序。

  Consumer:消息消費者。消息的接收者,通常是獨立的程序。

  Channel:消息通道,也稱信道。在客戶端的每一個鏈接裏能夠創建多個Channel,每一個Channel表明一個會話任務。

 

RabbitMQ使用流程

  AMQP模型中,消息在producer中產生,發送到MQ的exchange上,exchange根據配置的路由方式投遞到相應的Queue上,Queue又將消息發送給已經在此Queue上註冊的consumer,消息從queue到consumer有push和pull兩種方式。

  1.客戶端鏈接到消息隊列服務器,打開一個channel。

  2.客戶端聲明一個exchange,並設置相關屬性。

  3.客戶端聲明一個queue,並設置相關屬性。

  4.客戶端使用routing key,在exchange和queue質檢創建好binding關係。

  5.生產者客戶端投遞消息到exchange。

  6.exchange接收到消息後,就根據消息的RoutingKey和已經設置的binding,進行消息路由,將消息投遞到一個或多個隊列裏。

  7.消費者客戶端從對應的隊列中獲取並處理消息。

 

RabbitMQ的優缺點:

  優勢:

    1.由Erlang語言開發,支持大量協議:AMQP、XMPP、SMTP、STOMP。

    2.支持消息的持久化,負載均衡和集羣,且集羣易擴展。

    3.具備一個Web監控界面,易於管理。

    4.安裝部署簡單,上手容易,功能豐富,強大的社區支持。

    5.支持消息確認機制、靈活的消息分發機制。

  缺點:

    1.因爲犧牲了部分性能來換取穩定性,好比消息的持久化功能,使得RabbitMQ在大吞吐量性能方面不及Kafka和ZeroMQ。

    2.因爲支持多種協議,使RabbitMq很是重量級,比較適合企業級開發。

 

所以,當須要一個穩定的、高可考性的、功能強大易於管理的消息隊列能夠選擇RabbitMQ。若是對消息吞吐量需求較大,切不在意消息偶爾丟失的狀況能夠使用Kafka。

 

安裝RabbitMQ

官方地址:http://www.rabbitmq.com/install-standalone-mac.html#install-homebrew

首先 安裝 homebrew 

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

而後使用brew命令安裝便可

brew install rabbitmq

安裝目錄:/usr/local/cellar/rabbitmq/3.7.5

 

啓動RabbitMQ

進入到安裝目錄 /usr/local/cellar/rabbitmq/3.7.5 執行

sbin/rabbitmq-server

 

啓動插件

  啓動完畢以後,另起一個終端 進入/usr/local/cellar/rabbitmq/3.7.5/sbin

./rabbitmq-plugins enable rabbitmq_management(執行一次之後不用再次執行)

 

登錄管理界面

http://localhost:15672/

帳號密碼都是guest

 

 

rabbitMQ經常使用命令

啓動監控管理器:rabbitmq-plugins enable rabbitmq_management

關閉監控管理器:rabbitmq-plugins disable rabbitmq_management

啓動rabbitmq:rabbitmq-service start

關閉rabbitmq:rabbitmq-service stop

查看全部的隊列:rabbitmqctl list_queues

清除全部的隊列:rabbitmqctl reset

關閉應用:rabbitmqctl stop_app

啓動應用:rabbitmqctl start_app

 

用戶和權限設置

添加用戶:rabbitmqctl add_user username password

分配角色:rabbitmqctl set_user_tags username administrator

新增虛擬主機:rabbitmqctl add_vhost vhost_name

將新虛擬主機受權給新用戶:rabbitmqctl set_permissions -p vhost_name username '.*' '.*' '.*'

 

角色說明

none 最小權限角色

management 管理員角色

policymaker 決策者

monitoring 監控

administrator 超級管理員

相關文章
相關標籤/搜索