RabbitMQ

489 阅读3分钟

官网地址,也可以参考这个地址Cloud

安装

安装是基于Centos 7.2.1511

安装Erlang

[root@localhost rabbitmq]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
[root@localhost rabbitmq]# yum install erlang

安装RabbitMQ

[root@localhost rabbitmq]# curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
[root@localhost rabbitmq]# yum install rabbitmq-server

我安装的版本是3.7.15

启动RabbitMQ

# 设置开启启动
[root@localhost rabbitmq]# chkconfig rabbitmq-server on
# 启动服务
[root@localhost rabbitmq]# systemctl start rabbitmq-server
# 停止服务
[root@localhost rabbitmq]# systemctl stop rabbitmq-server
# 开放端口,默认端口为5672
[root@localhost rabbitmq]# firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放端口
[root@localhost rabbitmq]# firewall-cmd --reload # 重启防火墙
# 查看服务是否启动
[root@localhost rabbitmq]# systemctl status rabbitmq-server.service

监控后台配置

  1. 复制文件
    • 将/usr/share/doc/rabbitmq-server-3.7.15/ 目录下复制一份模板到 /etc/rabbitmq 目录下进行修改
    [root@localhost rabbitmq-server-3.7.15]# cd /usr/share/doc/rabbitmq-server-3.7.15/
    [root@localhost rabbitmq-server-3.7.15]# cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
    
    在3.8.2的版本中,直接通過命令find / -name rabbit.app查找rabbit.app文件進行修改
  2. 修改配置文件
   %%
   %% Security, Access Control
   %% ========================
   %%
   %% Related doc guide: https://www.rabbitmq.com/access-control.html.

   %% The default "guest" user is only permitted to access the server
   %% via a loopback interface (e.g. localhost).
   {loopback_users, []} # 将原文件的注释去掉,并且去掉最后一个,号。将[]中的内容去掉
   %%
   %% Uncomment the following line if you want to allow access to the
   %% guest user from anywhere on the network.
   %% {loopback_users, []},


   %% TLS configuration.
   %%

如果不修改,那么远程将无法访问,默认只能通过localhost访问

  1. 加载监控插件并开放端口
[root@localhost rabbitmq-server-3.7.15]# rabbitmq-plugins enable rabbitmq_management # 启用监控插件,默认端口为15672
[root@localhost rabbitmq-server-3.7.15]# firewall-cmd --zone=public --add-port=15672/tcp --permanent # 开放端口
[root@localhost rabbitmq-server-3.7.15]# firewall-cmd --reload # 重启防火墙
  1. 访问监控后台
    在浏览器中输入http://服务器IP:15672即可访问,默认用户名和密码guest/guest,也可以新增用户,命令如下
[root@localhost rabbitmq-server-3.7.15]# rabbitmqctl add_user admin admin # 添加用户rabbitmqctl add_user 用户名 密码
[root@localhost rabbitmq-server-3.7.15]# rabbitmqctl set_user_tags admin administrator # 赋予用户管理员角色rabbitmqctl set_user_tags 用户名 administrator
[root@localhost rabbitmq-server-3.7.15]# rabbitmqctl list_users # 查看用户及角色
[root@localhost rabbitmq-server-3.7.15]# rabbitmqctl list_permissions -p / # 查看用户权限
[root@localhost rabbitmq-server-3.7.15]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" # 设置用户权限

RabbitMQ介绍

这是RabbitMQ大致的流程图,下面将分别介绍下里面的元素

  1. Queue:队列,存储消息,队列的特性是先进先出,消费者(client)消费Queue中的消息,可以多个消费者消费一个队列,Queue会将消息以轮询的方式平分给这些消费者,这样容易导致一个问题,就是某些消费者处理慢的话会忙个不停,有些消费者处理快的会空闲。prefetchCount参数可以用来处理这种情况,当这个参数为1时,表示队列只有在收到消费者发回的上一条消息 ack 确认后,才会向该消费者发送下一条消息。prefetchCount 的默认值为0,即没有限制,队列会将所有消息尽快发给消费者。
  2. Exchange:交换机,RabbitMQ有4种交换机类型
    • Direct,直接交换机,把消息路由到完全匹配的队列中
    • Topic,主题交换机,把消息路由到模糊匹配的队列中,该交换机的路由模式必须包含*或者#
    • Fanout,扇形交换机,会把消息发给绑定给它的全部队列,不管路由键或者是路由模式,如果配置了routing_key会被忽略。
    • Headers,属性交换机,会获取消息的headers(也是一个键值对的形式),对比其中的键值对是否完全匹配Queue与Exchange绑定时指定的键值对;如果完全匹配则消息会路由到该Queue,否则不会路由到该Queue,使用的较少。

SpringBoot2.x集成RabbitMQ

项目源代码

参考文档

blog.csdn.net/y_k_y/artic…