01給女朋友講講rabbitmq-安裝與簡述

一、AMQP協(xié)議

高級消息隊列協(xié)議,一種約定俗成的規(guī)范。主要適用的消息中間件為RabbitMq、ActiveMq。

發(fā)布者(Publisher)發(fā)布消息(Message),經(jīng)由交換機(Exchange)。
交換機根據(jù)路由規(guī)則將收到的消息分發(fā)給與該交換機綁定的隊列(Queue)。
最后 AMQP 代理會將消息投遞給訂閱了此隊列的消費者,或者消費者按照需求自行獲取。


AMQP模型

二、RabbitMQ概念

RabbitMQ是一個消息中間件,可以接收、存儲并轉(zhuǎn)發(fā)消息,由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。
它類似于我們生活中的快遞站點,當你要發(fā)送包裹時,你把你的包裹放在快遞站點,快遞員最終會把你的快遞送到收件人那里。
應用場景:

  • 異步處理。把消息放入消息中間件中,等到需要的時候再去處理。
  • 流量削峰。例如秒殺活動,在短時間內(nèi)訪問量急劇增加,使用消息隊列,當消息隊列滿了就拒絕響應,跳轉(zhuǎn)到錯誤頁面,這樣就可以使得系統(tǒng)不會因為超負載而崩潰。
  • 應用解耦。假設(shè)某個服務A需要給許多個服務(B、C、D)發(fā)送消息,當某個服務(例如B)不需要發(fā)送消息了,服務A需要改代碼再次部署;當新加入一個服務(服務E)需要服務A的消息的時候,也需要改代碼重新部署;另外服務A也要考慮其他服務掛掉,沒有收到消息怎么辦?要不要重新發(fā)送呢?是不是很麻煩,使用MQ發(fā)布訂閱模式,服務A只生產(chǎn)消息發(fā)送到MQ,B、C、D從MQ中讀取消息,需要A的消息就訂閱,不需要了就取消訂閱,服務A不再操心其他的事情,使用這種方式可以降低服務或者系統(tǒng)之間的耦合。

三、RabbitMQ安裝

RabbitMQ依賴于erlang語言,所以安裝之前需要先安裝erlang語言環(huán)境

erlang下載地址: https://www.erlang-solutions.com/downloads/
rabbitmq下載地址:https://github.com/rabbitmq/rabbitmq-server/releases

本文采用的版本
rabbitmq:3.8.19
erlang:23.2

準備好對應的rmp安裝包后,我們就可以開始了

image.png

1.安裝erlang
安裝所需環(huán)境

yum -y install unixODBC
yum -y install socat

安裝erlang

rpm -Uvh esl-erlang_23.2-1_centos_7_amd64.rpm 

檢測是否安裝成功

[root@localhost soft]# erl
Erlang/OTP 23 [erts-11.1.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Eshell V11.1.4  (abort with ^G)
1> 

2.安裝rabbitmq

rpm -Uvh rabbitmq-server-3.8.19-1.el7.noarch.rpm

rabbitmq現(xiàn)已安裝在您的系統(tǒng)上。
操作rabbitmq命令:

# 加入開機自啟
systemctl enable rabbitmq-server
# 啟動rabbitmq
systemctl start rabbitmq-server
# 停止rabbitmq
systemctl stop rabbitmq-server
# 重啟rabbitmq
systemctl restart rabbitmq-server
# 檢查rabbitmq運行狀態(tài)
systemctl status rabbitmq-server

成功啟動后,狀態(tài)如下:

[root@localhost soft]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2021-07-20 17:17:39 CST; 21s ago
 Main PID: 6590 (beam.smp)
   Status: "Initialized"
   CGroup: /system.slice/rabbitmq-server.service
           ├─6590 /usr/lib/erlang/erts-11.1.4/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -- -root /usr/lib/erlang -prog...
           ├─6605 erl_child_setup 32768
           ├─6639 /usr/lib/erlang/erts-11.1.4/bin/epmd -daemon
           ├─6664 inet_gethost 4
           └─6665 inet_gethost 4

7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: TLS Library: OpenSSL - OpenSSL 1.0.2k-fips  26 Jan 2017
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Doc guides:  https://rabbitmq.com/documentation.html
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Support:     https://rabbitmq.com/contact.html
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Tutorials:   https://rabbitmq.com/getstarted.html
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Monitoring:  https://rabbitmq.com/monitoring.html
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Logs: /var/log/rabbitmq/rabbit@localhost.log
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
7月 20 17:17:30 localhost.localdomain rabbitmq-server[6590]: Config file(s): (none)
7月 20 17:17:38 localhost.localdomain rabbitmq-server[6590]: Starting broker... completed with 0 plugins.
7月 20 17:17:39 localhost.localdomain systemd[1]: Started RabbitMQ broker.

3.修改防火墻和SELinux規(guī)則
如果您已運行防火墻 ,運行以下命令開放端口。如果沒有開啟防火墻,可以忽略此步驟。

firewall-cmd –zone=public –permanent –add-port=4369/tcp
firewall-cmd –zone=public –permanent –add-port=25672/tcp
firewall-cmd –zone=public –permanent –add-port=5671-5672/tcp
firewall-cmd –zone=public –permanent –add-port=15672/tcp
firewall-cmd –zone=public –permanent –add-port=61613-61614/tcp
firewall-cmd –zone=public –permanent –add-port=1883/tcp
firewall-cmd –zone=public –permanent –add-port=8883/tcp
firewall-cmd –reload

如果您啟用SELinux,則必須運行以下命令以允許RabbitMQ服務。

setsebool -P nis_enabled 1

4.開啟rabbitmq的web控制臺

啟動RabbitMQ Web管理控制臺

rabbitmq-plugins enable rabbitmq_management

訪問RabbitMQ的管理面板http://IP:15672/

image.png

默認用戶的用戶名密碼為guest/guest,如果直接使用此用戶登錄,會提示User can only log in via localhost
image.png

解決方案:
第一種
創(chuàng)建/etc/rabbitmq/rabbitmq.config文件并添加以下內(nèi)容

[{rabbit, [{loopback_users, []}]}].

然后重啟rabbitmq服務即可
第二種
直接添加其他用戶

# 添加用戶并設(shè)置密碼
rabbitmqctl add_user admin 123456
# 給用戶添加標簽
rabbitmqctl set_user_tags admin administrator
# 給用戶設(shè)置權(quán)限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

完成后可直接用創(chuàng)建的用戶登錄


image.png

用戶列表.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 頁面發(fā)布 1.1 需求分析 業(yè)務流程如下: 1、管理員進入管理界面點擊“頁面發(fā)布”,前端請求cms頁面發(fā)布接口...
    lww文閱讀 313評論 0 0
  • 1. RabbitMQ的介紹和安裝1.1 介紹1.1.1 是什么?1.1.2 使用場景1.1.3 市面上常見消息隊...
    程序員Darker閱讀 462評論 0 0
  • 什么叫消息隊列? 消息(Message)是指在應用間傳送的數(shù)據(jù)。消息可以非常簡單,比如只包含文本字符串,也可以更復...
    Agile_dev閱讀 2,444評論 0 24
  • 消息中間件 一、簡介 消息中間件也可以稱為消息隊列(MQ:message queue),是指用高效可靠的消息傳遞機...
    胖虎喜歡小紅閱讀 1,075評論 0 14
  • 更新記錄:2017.07.18 增加 MAC 安裝方式。[toc]簡書不支持 toc 目錄模式,截圖一張。imag...
    inke閱讀 957評論 0 9

友情鏈接更多精彩內(nèi)容