注意: 使用 CentOS-7-x86_64 使用 CentOs6也行

安装依赖

yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

安装Erlang

需要到网上下载

erlang-18.3-1.el7.centos.x86_64.rpm
socat-1.7.3.2-5.el7.lux.x86_64.rpm
rabbitmq-server-3.6.5-1.noarch.rpm

链接:https://pan.baidu/s/1WHIzqAUnoJBYBliI2n5UWQ
提取码:1234

创建一个文件 shareFolder 将上面下载的东西都放到这个文件里

然后利用宝塔终端或者SSH工具将shareFolder文件上传到 /usr/local/src

然后cd 进入到 shareFolder个文件里 开始下面的操作

使用yum更新安装依赖

sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y

如果遇到

Cannot retrieve metalink for repository: fedora. Please verify its path and try again

或者是

Cannot retrieve metalink for repository: epel. Please verify its path and try again
解决方法
执行如下命令:
su -c "sed -i 's|^#baseurl|baseurl| ; s|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/*"

下载rpm包

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm  &&

wget http://copr-be.cloud.fedoraproject/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/nscd-2.17-55.el6.x86_64.rpm  

安装rpm包

sudo rpm -Uvh *-2.17-55.el6.x86_64.rpm --force --nodeps

安装完毕后查看glibc版本,发现glibc版本已经到2.17了

strings /lib64/libc.so.6 | grep GLIBC

注意:这里如果没有出现 2.17那么 下面的 步骤就无法实现 上百度找原因

安装RabbitMQ

# 安装erlang 
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm  
# 安装 socat
rpm -ivh socat-1.7.3.2-1.1.el7.x86_64.rpm  
# 安装 rabbitmq
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm 

如果在安装的过程中出现类似以下错误:

说明gblic 版本太低 errorr错误 到到百度找解决办法 一般情况下 升级glibc就行了

开启管理界面及配置

# 开启管理界面
rabbitmq-plugins enable rabbitmq_management

设置配置文件

cd /usr/share/doc/rabbitmq-server-3.6.5/

cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

服务

service rabbitmq-server start # 启动服务
service rabbitmq-server stop # 停止服务
service rabbitmq-server restart # 重启服务
service rabbitmq-server status # 状态查询

关闭防火墙

systemctl stop firewalld.service && systemctl disable firewalld.service

如果不关闭防火墙那么是无法访问RabbitMQ的

创建用户
rabbitMq从3.x之后不允许用guest用户登录,可以使用下面的方法解决

(1)首先查看当前的用户信息:rabbitmqctl list_users

[root@ls-P2EqsUP3 rabbitmq-server-3.6.5]# rabbitmqctl list_users
Listing users ...

(2)新增一个用户 rabbitmqctl add_user Username Password (用户名和密码均为root)

[root@ls-P2EqsUP3 rabbitmq-server-3.6.5]# rabbitmqctl add_user root root
Creating user "root" ...

(3)为新用户(root)设置超级管理员的权限(这样就和guest用户是同样的功能了)

[root@ls-P2EqsUP3 rabbitmq-server-3.6.5]# rabbitmqctl set_user_tags root administrator
Setting tags for user "root" to [administrator] ...

(4)重启rabbitmq: service rabbitmq-server restart
(5)再次查看用户列表: rabbitmqctl list_users

[root@ls-P2EqsUP3 rabbitmq-server-3.6.5]# rabbitmqctl list_users
Listing users ...
root    [administrator]

接下来就可以用root用户来进行登录了。

配置虚拟主机及用户

RabbitMQ在安装好后 启动服务,可以访问http://ip地址:15672

如果ip地址不知道 使用 ifconfig 查询 ,这是我的访问地址 http://192.168.216.128:15672

使用我们自己创建的超级管理员 用户名root和密码root;如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:


最上侧的导航是:概览、连接、信道、交换器、队列、用户管理

点击Admin

发现没有配置虚拟机,那么我们需要给root绑定一个虚拟机,默认虚拟机是/



创建新用户

角色权限说明

1、 超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

2、 监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

3、 策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息

4、 普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

5、 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

创建完成后

Virtual Hosts配置 (虚拟机配置)

像mysql拥有数据库的概念并且可以指定用户对库和表等操作的权限。RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当于mysql的db。Virtual Name一般以/xxx开头。

比如我添加一个虚拟机名称 /itcast

接下来 我们就将我们创建的虚拟机和创建账号绑定

点击我们创建的itcast

然后我们回到 用户页面

可以看到 绑定成功

然后 使用 我们创建的 admin用户 来重新登录下

交换机的类型
RabbitMQ有四种交换机类型:

  1. 直连交换机:Direct exchange
  2. 扇形交换机:Fanout exchange
  3. 主体交换机:Topic exchange
  4. 首部交换机:Headers exchange

直连交换机

处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “abc”,则只有被标记为“abc”的消息才被转发,不会转发abc.def,也不会转发dog.ghi,只会转发abc。


扇形交换机

将消息路由给绑定到它身上的所有队列,不同于直连交换机,路由键在此类型上不启任务作用
如果N个队列绑定到某个扇形交换机上,当有消息发送给此扇形交换机时,交换机会将此消息发送给这所有的N个队列 ,队列只不过少了路由键,直接绑定到交换机上

主题交换机
将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“”匹配不多不少一个词。因此“abc.#”能够匹配到“abc.def.ghi”,但是“abc.” 只会匹配到“abc.def”。将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号#匹配一个或多个词,*符号用来代替任意单词

  • 当一个队列以”#”作为绑定键时,它将接收所有消息,而不管路由键如何,类似于fanout型交换器。
  • 当特殊字符”*”、”#”没有用到绑定时,topic型交换器就好比direct型交换器了。

头部交换机

不处理路由键。而是根据发送的消息内容中的headers属性进行匹配。在绑定Queue与Exchange时指定一组键值对;当消息发送到RabbitMQ时会取到该消息的headers与Exchange绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列。headers属性是一个键值对,可以是Hashtable,键值对的值可以是任何类型。而fanout,direct,topic 的路由键都需要要字符串形式的。

匹配规则x-match有下列两种类型:

  • x-match = all :表示所有的键值对都匹配才能接受到消息

  • x-match = any :表示只要有键值对匹配就能接受到消息

点赞 -收藏加 -关注
便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
感谢,配合,希望我的努力对你有帮助^_^

更多推荐

Linux中安装RabbitMQ