赞
踩
本篇博客是进行RabbitMQ的基础认识以及环境搭建,若文章中出现相关问题,请指出!
所有博客文件目录索引:博客目录索引(持续更新)
博客案例代码可见:Gitee-demoexer/RabbitMQ、Github-javademos/RabbitMQ
核心思想:接收并转发消息,可以看做是邮局。 接收存储转发的是二进制消息叫做message。
MQ中有三个术语(思想):一般的话这三个角色不在一台机子上,通常在多个服务器上,一大好处解耦
消息队列:MQ就是message queue。
三个作用:①允许入列。②存储消息。③把消息出列。
特性:①业务无关。只需要做好消息分发即可。②FIFO,具有队列性质。③容灾,也就是生产者传输过来的消息是能够进行持久化的。有能力在恢复服务之后将消息捞出来。保证可靠性。④性能,吞吐量大。
为什么要使用消息队列?
1、开源、跨语言,能够支持java、python、rubby等开发。
2、底层使用Erlang语言编写的。(之前在交换机领域广泛应用,在通信里面是很受欢迎的),该语言性能特别好,在通信领域有很大优势。
3、应用广泛。很多大公司都会以mq来作为消息通信的组件,有些公司会在它身上进一步封装。
4、社区活跃、API丰富。
技术选型:根据速度延迟因素也会决定。
Advanced Message Queuing Protocol
:高级消息队列协议。专门面向消息中间件的一种开放式标准应用层协议,也可以理解为是一套规范。
连接关系:publisher把消息发送到server,接着找到virtual host,接着对应一个exchange,接着mq会正确的将消息投递到mq中。
作为我们的消费者与message queue绑定即可,消费者的话不需要管上面的内容。
架构与名词介绍
MQ的架构:
Server
:服务;mq必须要启动一个服务才能给我们消息接收与发送的能力。
Connection
:与server进行连接,主要就是应用程序与服务端之间进行建立连接的。
Channel
:一个connection中包含多个channel。信道的意思,几乎所有的操作都在信道上进行,客户端可以建立多个信道。后序我们的操作也是去操作的channel,比如说绑定队列都是在channel上进行的。
Message
:消息,由properties和body组成的。第一部分properties对消息进行一些额外的修饰如包括消息的优先级,队列的延迟还有消息的其他属性包括自定义的属性都可以往properties中写。第二部分body就是消息的实体,相当于我们具体所传输的消息放在其中。
virtual host
:虚拟主机(独立的单元),顶层隔离作用。同一个虚拟主机下,不能有重复的交换机和queue
Exchange
:交换机,接收生产者的消息的,然后根据指定的路由器去把消息转发到所绑定的队列上。
binding
:绑定交换机和队列。
routing key
:路由键,路由规则,虚拟机可以用它来确定这个消息如何进行一个路由。queue
:队列,消费者只需要监听队列来消费消息,不需要关注消息来自于哪个Exchange。
消息流转过程
RabbitMQ 最好安装教程:比较详细,比较新
安装erlang
# 配置erlang源
vim /etc/yum.repos.d/rabbitmq_erlang.repo
配置信息如下:导入密钥操作在里面已经添加
# In /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=1
enabled=1
# 导入密钥 PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
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
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
接着安装erlang
# 安装
yum install erlang
# 测试版本
erl -version
# 进入erl交互界面
erl
安装rabbitmq
# 导入密钥,由于前面配置文件中已配置可不用
# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
# 可能会有超时情况,需要fq,fq即可下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.2/rabbitmq-server-3.8.2-1.el7.noarch.rpm
# 安装rabbit-server
yum install rabbitmq-server-3.8.2-1.el7.noarch.rpm
此时我们运行rabbitmq出现以下问题:
systemctl start rabbitmq-server
解决方案:
原因:虚拟机中没有设置指定主机名!
# 在hosts文件中进行配置主机名
vim /etc/hosts
# ***配置内容***
192.168.118.128 test0001
# ***配置内容***
# 保存好之后,使用命令进行生效
/etc/init.d/network restart
# 此时再次运行rabbitmq即可运行!!!
systemctl start rabbitmq-server
rabbitmq相关命令:启动,停止等命令
# 停止RabbitMQ
rabbitmqctl stop
# 设置开机启动
systemctl enable rabbitmq-server
# 启动rabbitmq
systemctl start rabbitmq-server
# 查看状态
rabbitmqctl status
# 检查RabbitMQ服务器的状态
systemctl status rabbitmq-server
# 开启web管理界面 访问ip:15672 ,暂时访问不通
rabbitmq-plugins enable rabbitmq_management
安装好mq之后,我们来尝试启动mq并进入mq的管理后台
# 启动mq服务器
systemctl start rabbitmq-server
# 查看状态
rabbitmqctl status
若是查看状态为如下信息表示启动正常:
接下来我们启动管理后台:
# 启动管理后台,使用插件开启
rabbitmq-plugins enable rabbitmq_management
此时我们来访问http://192.168.118.128:15672/即可!
# 创建用户 用户名密码为admin password
rabbitmqctl add_user admin password
# 为用户名admin来添加分类:为用户名为admin添加管理员权限administrator
rabbitmqctl set_user_tags admin administrator
# 查看当前用户与分类,默认会自带一个guest用户
rabbitmqctl list_users
接着我们来进行登陆输入用户名与密码:admin password
Totals及node
Churn statistics
Ports and contexts:端口与上下文信息
Export definitions
、Import definitions
一般我们来管理集群的时候通过导入的形式来管理对应的队列,而不是一个个手动配置:
其中连接、信道、queue就是对来访的以及正在进行中的进行统计信息展示等等。
交换机包含六种模式:
在Admin管理界面中的虚拟机中来对虚拟机进行操作
①添加新的虚拟注解
②给/虚拟主机新增一个权限
step1
:点击左边的/
step2
:此时出现新页面,添加设置权限
step3
:回到页面,查看
我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
Q群:851968786 我们可以一起探讨学习
注明:转载可,需要附带上文章链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。