RabbitMQ在Linux上从0到1搭建

RabbitMQ= Message Queue 消息队列

素材来源(支持原创):
源码链接: link
官网链接: link

简介

RabbitMq是一个广泛使用的消息服务器,采用Erlang语言编写,是一种开源的实现AMQP(高级消息队列协议)的消息中间件

What is RabbitMQ?

在这里插入图片描述

常用的消息中间件

在这里插入图片描述

MQ的应用场景

异步处理
按照正常流程下订单操作需要700ms, 通过MQ异步执行 只需要200ms 向MQ发送完消息即可

在这里插入图片描述

系统解耦
以前系统之间是  A发送B、然后在发送C、D系统    如果再加一个E系统 A系统还需要再发送E系统...  麻烦
添加MQ后   
1.A系统只需要发送消息到MQ上 谁需要消息 谁去MQ上拿去即可        
2.系统A可以是Java编写  B系统可以使用Go编写  C系统使用Python编写 	

在这里插入图片描述

流量削峰(限流)
通过添加MQ实现限流的操作,  如果没有MQ,QPS请求全部打到数据库上,会造成DB服务器的压力,有可能宕机,现在将请求发送到MQ上  通过系统B来匀速消费请求

在这里插入图片描述

日志处理
在微服务环境中,系统可能有成千上百个,每个服务器都会记录大量日志 logger.info()   当我们查看日志的时候 ,需要到每一台服务器上去查看, 现在我们的请求全都发送到MQ上  查看起日志更加方便  
主要通过ELK(elastic search +logstash +kabana)日志收集系统在kabana上查看 

RabbitMQ的运行环境搭建

下载安装Erlang(采用25.1.1版本) 下载好后上传到linux上

因为RabbitMQ是Erlang语言开发的   要先下载安装Erlang
[ErLang下载地址:](https://www.erlang.org/patches/otp-25.1.1)
  • 由于Erlang需要其他依赖 所以安装Erlang需要先安装其他依赖
	yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
**说明:yum -y install 是linux安装依赖的命令  -y代表自动确认下载**
  • 解压Erlang文件
tar -zxvf opt-src-25.1.1.tar.gz -C /usr/local
 **说明:-C 是指定目录   不写就是当前目录**
  • 配置
    因为下载的Erlang是源代码包,需要把它编译成可以运行的
./configure

在这里插入图片描述

  • 编译
make

在这里插入图片描述
说明:执行make命令 把源代码编译成可以运行的程序

  • 安装
 make install

在这里插入图片描述
说明: 执行make install 就是将编译后能运行的程序 添加到path下 类似配置java_home 执行后就可以在任何地方都可以运行Erlang了

  • 验证Erlang是否安装成功 输入
erl

代表成功
在这里插入图片描述

下载安装RabbitMQ(3.10.11)

tar -xvf rabbitmq-server-generic-unix-3.10.11.tar.xz -C /usr/local
说明: 不需要解压 tar -zxvf   直接展开就好  tar -xvf    添加 -C 就是展开在指定的目录
  • 进入展开的位置 启动rabbitMQ
cd /usr/local
cd rabbitmq_server-3.10.11/
cd sbin/
./rabbitmq-server        //启动rabbitMq 

在这里插入图片描述

  • 启动、关闭RabbitMq 以及查看RabbitMQ状态
./rabbitmq-server -detached    //后端启动
ps -ef|grep rabbit		// 查看rabbitMQ进程
./rabbitmqctl status    // 查看rabbitMQ当前状态
./rabbitmqctl shutdown    //关闭rabbitMQ

执行效果
在这里插入图片描述

  • 配置RabbitMQ的环境变量
    • 打开配置文件
	 vi +$ /etc/profile   // 打开配置文件    添加+$ 表示光标选中文件的最后一行
	 - 添加环境变量
	RABBIT_HOME=/usr/local/rabbitmq_server-3.10.11
	PATH=$PATH:$RABBIT_HOME/sbin
	export RABBIT_HOME PATH

在这里插入图片描述

	- 保存退出 :wq!
	- 刷新配置文件
	source /etc/profile
	 - 然后就可以在任何地方启动rabbitMQ了
	rabbitmq-server -detached   //启动rabbitMQ
	rabbitmqctl status  //查看rabbitMQ状态

添加rabbitMQ用户 赋予角色+权限

rabbitmqctl add_user admin 123456   // 添加用户:admin  密码:123456
rabbitmqctl list_users      //查看添加用户列表
rabbitmqctl set_user_tags admin administrator   // 设置用户:admin 角色:administrator
rabbitmqctl set_permissions ".*" ".*" ".*"   //设置用户admin权限为:可读 可写 可配置
rabbitmqctl list_permissions    //查看用户权限

启动RabbitMQ的web后台 需要添加插件

cd /usr/local/rabbitmq_server-3.10.11/sbin   //切换到sbin下
rabbitmq-plugins list  //查看rabbitMQ下的插件
rabbitmq-plugins  enable rabbitmq_management  //启动rabbitmq_management 插件
  • 然后就可以执行
    http://192.168.110.178:15672/ 来访问rabbitMQ了 这个时候不行 需要打开防火墙
	systemctl status firewalld   // 查看防火墙状态
	systemctl disable firewalld   //设置防火墙开启不自动启动
	systemctl stop firewalld   //关闭防火墙

出现下图表示成功
在这里插入图片描述

添加虚拟主机步骤如图

在这里插入图片描述

RabbitMQ的工作模型

在这里插入图片描述

交换机的类型

在这里插入图片描述
- 扇形交换机

	 - 群发策略   提供者发送消息到 交换机 上  交换机绑定几个队列 就将消息发送几遍

在这里插入图片描述

	 - 配置类

@Configuration
public class RabbitConfig {
   
    // rabbitMQ 三部曲
    // 1.定义交换机
    @Bean
    public FanoutExchange fanoutExchange(){
   
        return new FanoutExchange("exchange.fanout");
    }
    // 2.定义队列
    @Bean
    public Queue queueA(){
   
    return  new Queue("queue.fanout.a");
    }
    @Bean
    public Queue queueB(){
   
        return  new Queue("queue.fanout.b");
    }
    // 3.绑定交换机和队列   扇形交换机不需要路由  直接绑定交换机就行了
    @Bean
    public Binding bingingA(FanoutExchange fanoutExchange,Queue queueA){
   
        return BindingBuilder.bind(queueA).to(fanoutExchange);
    }
    @Bean
    public Binding bingingB(FanoutExchange fanoutExchange,Queue queueB){
   
        return BindingBuilder.bind(queueB).to(fanoutExchange);
    }

}
	 - 业务类

@Component
@Slf4j
public class MessageService {
   
    @Resource
    private RabbitTemplate rabbitTemplate;

    public void sendMessage(String exchange,String routingKey,String message){
   
        
  • 46
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值