1、MQ是什麼
MQ:Message Queue :消息隊列
隊列:是就是一種數據結構 ,先進先出。在Redis中, List(lpush + rpop)操作就類似於隊列的操作
消息隊列:簡單的說就是用來進行消息傳輸的隊列。
消息中間件:簡單的說就是用來傳輸消息的中間載體,就是將你的信息發送到接受方,它並不關心發送的數據是什麼。
生活中的例子
你要給遠方的朋友寄一封信 ——》 把信放到郵箱,郵局幫你送信 ——》 郵局將信送到你朋友那裏
這裏“你”就表示一個生產者(發送信息),“郵局”就是一個消息中間件(傳輸信息),“朋友”就是消費者(接收消息)。
郵局中有很多需要處理的消息,會按照你投放的順序進行處理,類似於消息隊列。
2、MQ在開發中的作用
2.1、流量消峯(解決高併發)
2.2、模塊之間的異步通信
3、消息隊列的中間件有哪些
ActiveMQ ------- JMS(SUN公司提供的規範) Java message Server
RocketMQ ------- 由阿里開發
kafka -------------- 最初的設計,是用來完成分佈式下日誌的收集框架,後來轉換成消息隊列
RabbitMQ -------- 目前國內使用較爲廣泛的一個
4、RabbitMQ簡介
發展歷史
Rabbit科技有限公司開發了RabbitMQ,並提供對其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合資企業,2010年4月被VMware旗下的SpringSource收購。RabbitMQ在2013年5月成爲GoPivotal的一部分 。
基本概念
RabbitMQ是一套開源(MPL)的消息隊列服務軟件,是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。
主要特性
可伸縮性:集羣服務
消息持久化:從內存持久化消息到硬盤,再從硬盤加載到內存
運轉流程
5、RabbitMQ的安裝
# 安裝RabbitMQ需要的環境
yum install epel-release
yum install erlang
# 安裝rabbitMQ
# 下載rpm文件
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
# 下載完成需要安裝
yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
# 設置開機啓動
systemctl enable rabbitmq-server.service
# 啓動這個服務
systemctl start rabbitmq-server.service
# 查看服務的狀態
systemctl status rabbitmq-server.service
# 停止這個服務
systemctl stop rabbitmq-server.service
# 查看當前所有的用戶
rabbitmqctl list_users
# 查看 guest 用戶所有擁有的權限
rabbitmqctl list_user_permissions guest
# 刪除原來的guest用戶
rabbitmqctl delete_user guest
# 添加一個新的用戶(kongming, 密碼:123456)
rabbitmqctl add_user kongming 123456
# 給 kongming 設置個角色(tag)
rabbitmqctl set_user_tags kongming administrator
# 給 kongming 賦予權限
rabbitmqctl set_permissions -p / kongming ".*" ".*" ".*"
# 查看 kongming 用戶所擁有的權限
rabbitmqctl list_user_permissions kongming
# 開啓web的管理端
rabbitmq-plugins enable rabbitmq_management
# 查看端口是否開啓
netstat -apn|grep 5672
# 然後在網頁訪問: http://你服務器的ip:15672
# 輸入 kongming 123456 即可登錄到RabbitMQ的主頁