一唯笙、RabbitMQ簡介
MQ全稱為Message Queue, 是一種分布式應(yīng)用程序的的通信方法,它是消費(fèi)-生產(chǎn)者模型的一個典型的代表盒使,producer往消息隊(duì)列中不斷寫入消息崩掘,而另一端consumer則可以讀取或者訂閱隊(duì)列中的消息。
RabbitMQ是MQ產(chǎn)品的典型代表少办,是一款由Erlang語言開發(fā)呢堰,基于AMQP協(xié)議可復(fù)用的企業(yè)消息系統(tǒng)。業(yè)務(wù)上凡泣,可以實(shí)現(xiàn)服務(wù)提供者和消費(fèi)者之間的數(shù)據(jù)解耦枉疼,提供高可用性的消息傳輸機(jī)制,在實(shí)際生產(chǎn)中應(yīng)用相當(dāng)廣泛鞋拟。
AMQP:Advanced Message Queue骂维,高級消息隊(duì)列協(xié)議。他是應(yīng)用層協(xié)議的一個開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計,基于此協(xié)議的客戶端與消息中間件可傳遞消息樊展,并不受產(chǎn)品蹬屹、開發(fā)語言等條件的限制。
rabbitMQ的兩個核心組件是exchange和queue
運(yùn)行原理如下圖:
RabbitMQ 最初起源于金融系統(tǒng)佣谐,用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性乖杠、高可用性等方面表現(xiàn)不俗。具體特點(diǎn)包括:
二澄成、實(shí)驗(yàn)環(huán)境
系統(tǒng)操作: CentOS7.5 Mininal
IP : 192.168.1.103
三胧洒、安裝rabbitMQ
添加erlang官方倉庫
#? vim? /etc/yum.repos.d/rabbitmq_erlang.repo
##################################################
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
####################################################
添加rabbitMQ官方倉庫
#?rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
#? vim?/etc/yum.repos.d/rabbitmq.repo
###########################################################
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
############################################################
# yum clean all
# yum repolist??
# yum list?erlang?--showduplicates| sort -r
# yum list rabbitmq-server --showduplicates| sort -r
# yum? -y install epel-release?
# yum -y install? erlang? socat logrotate
# yum? -y install rabbitmq-server-3.7.10
# rpm -ql??rabbitmq-server??
# rpm -qc rabbitmq-server
啟動rabbitMQ
# systemctl start rabbitmq-server
#?systemctl enable rabbitmq-server
# systemctl status rabbitmq-server
# cat /etc/passwd
#? head -n 20? /var/log/rabbitmq/rabbit@`hostname`.log
# ll -a /var/lib/rabbitmq/
# cat /var/lib/rabbitmq/.erlang.cookie
# ps aux | grep rabbitmq
開啟網(wǎng)頁管理界面
# rabbitmq-plugins enable rabbitmq_management
# ss -tan | grep 5672
RabbitMQ默認(rèn)監(jiān)聽端口:
4369? ?erlang發(fā)現(xiàn)端口
5672? ? client端和server端通信端口
15672? 管理界面端口
25672? server間內(nèi)部通信口
#? vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.10/ebin/rabbit.app
將 {loopback_users, [<<"guest">>]}畏吓,改為:{loopback_users, []},
原因:rabbitmq從3.3.0開始禁止使用guest/guest權(quán)限通過除localhost外的訪問
#? systemctl restart rabbitmq-server
關(guān)閉防火墻
# systemctl stop firewalld?
# systemctl disable firewalld?
瀏覽器訪問??http://192.168.1.103:15672
默認(rèn)管理員用戶名密碼 : guest/guest
四卫漫、rabbitMQ命令行操作
學(xué)習(xí)rabbitmq菲饼,原理之后第一個要掌握的就是rabbitmqctl這個命令的用法了,rabbitmq的管理功能最全的就是rabbitmqctl命令列赎,當(dāng)然還有HTTP API和UI兩種管理手段宏悦。
# rabbitmqctl --help
# rabbitmqctl status
rabbitMQ 用戶與權(quán)限
添加用戶并授權(quán)
#? ?rabbitmqctl add_user admin? Admin@123
#? ?rabbitmqctl? set_user_tags admin? administrator
#??rabbitmqctl set_permissions? ?-p? "/"? admin? '.*'? ?'.*'? ? '.*'
# rabbitmqctl list_users
# rabbitmqctl? ?list_user_permissions? admin?
# rabbitmqctl add_vhost "/test"
# rabbitmqctl add_user test Test@123
# rabbitmqctl set_user_tags test administrator
# rabbitmqctl set_permissions -p "/test" test '.*' '.*' '.*'
# rabbitmqctl list_users
# rabbitmqctl list_user_permissions test
# rabbitmqctl list_permissions -p "/test"
配置用戶遠(yuǎn)程訪問
# vim /etc/rabbitmq/rabbitmq.config
###########################################################################
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["admin"]}]}
].
#############################################################################
# systemctl restart rabbitmq-server
瀏覽器訪問:http://192.168.1.103:15672
admin/Admin@123
五、rabbitMQ配置文件
簡單的rabbitMQ應(yīng)用配置可無需配置文件包吝,只有需要定制復(fù)雜應(yīng)用時饼煞,才需要用到配置文件。
如果是用rpm包安裝漏策,可從默認(rèn)docs目錄復(fù)制配置文件樣例:
#? cp??/usr/share/doc/rabbitmq-server-3.7.10/rabbitmq.config.example? ?/etc/rabbitmq/rabbitmq.config
#? ?cat??/etc/rabbitmq/rabbitmq.config
配置文件特點(diǎn):
在rabbitmq 3.7.0 之前派哲,rabbitmq.conf 使用了erlang語法配置格式:
1. 配置文件的語法繼承于erlang語言,有點(diǎn)類似json
2. 注釋采用%%
3. 注意最后結(jié)尾一定要加上.,表示結(jié)束掺喻,否則啟動會報錯
在rabbitmq 3.7.0 之后芭届,語法配置格式使用了sysctl 格式:
1. 單個信息都在一行里面
2. 配置信息以key value 的形式保存
3. # 開頭表示注釋
六、啟用SSL安全通訊
Management Plugin
https://www.cnblogs.com/wyt007/p/9086250.html
https://www.rabbitmq.com/management.html#single-listener-https
https://github.com/Berico-Technologies/CMF-AMQP-Configuration
七感耙、參考
rabbitmq的整體架構(gòu)一覽
https://blog.51cto.com/cuidehua/1769486
CentOS7 安裝 RabbitMQ 3.7
https://blog.csdn.net/liang_henry/article/details/79584843
rabbitmq/erlang-rpm
https://github.com/rabbitmq/erlang-rpm
Downloading and Installing RabbitMQ
https://www.rabbitmq.com/download.html
https://www.rabbitmq.com/install-rpm.html
Management Plugin
https://www.rabbitmq.com/management.html
Server Documentation
https://www.rabbitmq.com/admin-guide.html
rpm 安裝RabbitMQ 3.7.7版本-User can only log in via localhost
https://blog.csdn.net/shenhonglei1234/article/details/82745601
rabbitMQ默認(rèn)端口記錄
https://blog.csdn.net/zhouxianling233/article/details/79623204
rabbitmqctl(8)
https://www.rabbitmq.com/rabbitmqctl.8.html
RabbitMQ手冊之rabbitmqctl
http://www.reibang.com/p/61a90fba1d2a
Networking and RabbitMQ
https://www.rabbitmq.com/networking.html
rabbitMQ基礎(chǔ)篇
https://blog.csdn.net/ChengDianXiaoCai/article/details/72910333
rabbitMQ管理命令rabbitmqctl詳解
https://www.ywnds.com/?p=4738
RabbitMQ :常用命令 與 圖形管理 及 用戶權(quán)限
http://www.reibang.com/p/0964f6c46dc5
RabbitMQ on QingCloud AppCenter 用戶手冊
https://docs.qingcloud.com/product/big_data/rabbitmq/README.html#%E5%88%9B%E5%BB%BA-rabbitmq
rabbitmqadmin 命令行客戶端工具
https://www.rabbitmq.com/management-cli.html
rabbitMQ配置文件
https://www.cnblogs.com/zhming26/p/6140307.html
https://www.rabbitmq.com/configure.html#configuration-file
rabbitmq-server/docs/rabbitmq.conf.example
https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example
rabbitmq之配置文件詳解
https://www.cnblogs.com/cwp-bg/p/8397639.html
rabbitmq 生產(chǎn)環(huán)境配置
https://www.cnblogs.com/operationhome/p/10483840.html
RabbitMQ-官方指南-RabbitMQ配置
http://www.blogjava.net/qbna350816/archive/2016/08/02/431415.html
rabbitMQ消息隊(duì)列: 啟用SSL安全通訊
https://www.cnblogs.com/wyt007/p/9086250.html
CMF - AMQP - Configuration
https://github.com/Berico-Technologies/CMF-AMQP-Configuration
RabbitMQ技術(shù)入門與實(shí)戰(zhàn)
https://blog.csdn.net/Super_RD/column/info/15500