01给女朋友讲讲rabbitmq-安装与简述

一、AMQP协议

高级消息队列协议,一种约定俗成的规范。主要适用的消息中间件为RabbitMq、ActiveMq。

发布者(Publisher)发布消息(Message),经由交换机(Exchange)。
交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。
最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。


AMQP模型

二、RabbitMQ概念

RabbitMQ是一个消息中间件,可以接收、存储并转发消息,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
它类似于我们生活中的快递站点,当你要发送包裹时,你把你的包裹放在快递站点,快递员最终会把你的快递送到收件人那里。
应用场景:

  • 异步处理。把消息放入消息中间件中,等到需要的时候再去处理。
  • 流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃。
  • 应用解耦。假设某个服务A需要给许多个服务(B、C、D)发送消息,当某个服务(例如B)不需要发送消息了,服务A需要改代码再次部署;当新加入一个服务(服务E)需要服务A的消息的时候,也需要改代码重新部署;另外服务A也要考虑其他服务挂掉,没有收到消息怎么办?要不要重新发送呢?是不是很麻烦,使用MQ发布订阅模式,服务A只生产消息发送到MQ,B、C、D从MQ中读取消息,需要A的消息就订阅,不需要了就取消订阅,服务A不再操心其他的事情,使用这种方式可以降低服务或者系统之间的耦合。

三、RabbitMQ安装

RabbitMQ依赖于erlang语言,所以安装之前需要先安装erlang语言环境

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
安装所需环境

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现已安装在您的系统上。
操作rabbitmq命令:

# 加入开机自启
systemctl enable rabbitmq-server
# 启动rabbitmq
systemctl start rabbitmq-server
# 停止rabbitmq
systemctl stop rabbitmq-server
# 重启rabbitmq
systemctl restart rabbitmq-server
# 检查rabbitmq运行状态
systemctl status rabbitmq-server

成功启动后,状态如下:

[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规则
如果您已运行防火墙 ,运行以下命令开放端口。如果没有开启防火墙,可以忽略此步骤。

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

解决方案:
第一种
创建/etc/rabbitmq/rabbitmq.config文件并添加以下内容

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

然后重启rabbitmq服务即可
第二种
直接添加其他用户

# 添加用户并设置密码
rabbitmqctl add_user admin 123456
# 给用户添加标签
rabbitmqctl set_user_tags admin administrator
# 给用户设置权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

完成后可直接用创建的用户登录


image.png

用户列表.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 1 页面发布 1.1 需求分析 业务流程如下: 1、管理员进入管理界面点击“页面发布”,前端请求cms页面发布接口...
    lww文阅读 232评论 0 0
  • 1. RabbitMQ的介绍和安装1.1 介绍1.1.1 是什么?1.1.2 使用场景1.1.3 市面上常见消息队...
    程序员Darker阅读 427评论 0 0
  • 什么叫消息队列? 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复...
    Agile_dev阅读 2,367评论 0 24
  • 消息中间件 一、简介 消息中间件也可以称为消息队列(MQ:message queue),是指用高效可靠的消息传递机...
    胖虎喜欢小红阅读 976评论 0 14
  • 更新记录:2017.07.18 增加 MAC 安装方式。[toc]简书不支持 toc 目录模式,截图一张。imag...
    inke阅读 794评论 0 9