RabbitMQ Linux安装以及IDEA使用

一.在linux上安装插件

1.加载插件

输入命令 yum -y install epel-release

加载插件 yum -y install socat

RabbitMQ Linux安装以及IDEA使用_第1张图片

2.在/usr/src下创建一个RabbitMQ目录,将MQ下载在这个目录下

RabbitMQ Linux安装以及IDEA使用_第2张图片

3.安装erlang环境

在/usr/src/RabbitMQ 目录下将MQ需要的两个安装包放进去,进行安装命令,在linux粘贴: insert + shift

yum install -y esl-erlang_22.1.8-1_centos_7_amd64.rpm

4.安装RabbitMQ

yum install -y rabbitmq-server-3.8.1-1.el7.noarch.rpm

5.启动服务

1)启动服务

输入命令,启动服务

service rabbitmq-server start

停止服务

service rabbitmq-server stop

重启服务

service rabbitmq-server restart

2)开启管理插件

rabbitmq-plugins enable rabbitmq_management

RabbitMQ Linux安装以及IDEA使用_第3张图片

3)修改主机名,将自己的主机名添加到hosts中

vi /etc/hosts

RabbitMQ Linux安装以及IDEA使用_第4张图片

4).关闭防火墙

只关闭一次

systemctl stop firewalld

永久关闭

systemctl disable firewalld

5).添加用户名

rabbitmqctl add_user 用户名 密码

6).给用户权限,超级管理员

rabbitmqctl set_user_tags 用户名 administrator

RabbitMQ Linux安装以及IDEA使用_第5张图片

二.MQ的实际应用

RabbitMQ Linux安装以及IDEA使用_第6张图片

1.简单类型

  1. 加载顺序:

    • 获取到连接
    • 创建通道
    • 声明队列,去哪个队列获取
    • 监听队列,是否有消息
    • 消息发送给哪个队列

重点执行流程

RabbitMQ Linux安装以及IDEA使用_第7张图片
2. ### 解决方法(手动ack确认):

RabbitMQ Linux安装以及IDEA使用_第8张图片

3RabbitMQ Linux安装以及IDEA使用_第9张图片

2.Work模式

RabbitMQ Linux安装以及IDEA使用_第10张图片

  1. 消费者默认是轮循机制,一人一条

  2. 若让一个消费者在读取消息的时候睡了1秒,那么会造成第二个消费者已经将自己的轮循消息处理完了,第一个消费者还在慢慢的处理自己被分配的消息,工作效率低

RabbitMQ Linux安装以及IDEA使用_第11张图片

  1. 需要在声明队列后添加一个每个消费者同时只能处理一条消息

  2. 原因:处理完消息后,那个线程还处于睡眠状态

RabbitMQ Linux安装以及IDEA使用_第12张图片

模式机制

RabbitMQ Linux安装以及IDEA使用_第13张图片

3.fanout(扇形;广播;交换机)

RabbitMQ Linux安装以及IDEA使用_第14张图片

不同

  1. 添加了交换机(Exchange),交换机会向所有队列都发送消息

RabbitMQ Linux安装以及IDEA使用_第15张图片

  1. 消费者类声明队列,队列绑定交换机,消费者监听队列,队列有消息就订阅

RabbitMQ Linux安装以及IDEA使用_第16张图片

4.Direct(定向发送)

RabbitMQ Linux安装以及IDEA使用_第17张图片

4.1 发送者 交换机通过广播形式,以暗号对应,哪个队列可以对的上就将哪个消息放到队列中

RabbitMQ Linux安装以及IDEA使用_第18张图片

4.2 接收者

RabbitMQ Linux安装以及IDEA使用_第19张图片

接收者2

RabbitMQ Linux安装以及IDEA使用_第20张图片

问题:

如果我的rabbitMQ突然宕机了,交换机没有持久化,消息就丢失了,队列也没有持久化

解决

1.发送者将交换机,消息持久化

RabbitMQ Linux安装以及IDEA使用_第21张图片

2.消费者将队列持久化

RabbitMQ Linux安装以及IDEA使用_第22张图片

5.Topics(消息持久化以及*,#)

RabbitMQ Linux安装以及IDEA使用_第23张图片

5.1生产者 MessageProperties的静态方法可以保证消息的持久化

RabbitMQ Linux安装以及IDEA使用_第24张图片

5.2消费者 1.1

图有错: #是匹配所有 *是匹配一级目录

user.# 匹配所有user.下的路径: user.a user.a.a.a 不管几层目录都可以

user.* 只可以匹配user下的一层路径 例如 user.a user.b user.c

#.user 只要是user结尾的都可以

*.user 只能是a.user b.user c.user

RabbitMQ Linux安装以及IDEA使用_第25张图片

5.3 注意

1.若发送者定义了交换机持久化以及消息持久化

2.那么消费者绑定交换机时也应将持久化开开,否者报异常,客户端连接不上;队列也开启持久化

三.SpringBoot整合RabbitMQ

1.引入依赖

  1. 	<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-amqp</artifactId>
    		</dependency>
    

2.配置yaml文件

  1. spring:
      rabbitmq:
        host: 192.168.92.128
        username: lzj
        password: lzj
        virtual-host: new #虚拟主机名称
        port: 5672
    

3.发消息

  1. 单元测试类中发送消息

  2.   @Autowired
        private AmqpTemplate amqpTemplate;
    
        @Test
        public void sendMessage(){
           
            String msg="你好!!!!";
            amqpTemplate.convertAndSend("heima.topic.exchange", "a.insert", msg);
        }
    

4.消费者消费消息

  1. 自定义一个类

    1.这个类只负责监听已有的队列,不负责创建新的队列

    2.接收消息的类型与队列中已有的消息数据类型相对应

RabbitMQ Linux安装以及IDEA使用_第26张图片

5.修改发送消息的格式为json格式

  1. 不修改,jdk自带

    RabbitMQ Linux安装以及IDEA使用_第27张图片

5.2源码跟踪

  1. 发送消息的接口进入

RabbitMQ Linux安装以及IDEA使用_第28张图片

6.Java代码注解方式绑定交换机,队列,routekey

发消息还是测试类发送消息

  1. RabbitMQ Linux安装以及IDEA使用_第29张图片

  2. 进源码 在这里插入图片描述

  3. RabbitMQ Linux安装以及IDEA使用_第30张图片

  4. RabbitMQ Linux安装以及IDEA使用_第31张图片

  5. RabbitMQ Linux安装以及IDEA使用_第32张图片

  6. RabbitMQ Linux安装以及IDEA使用_第33张图片

  7. RabbitMQ Linux安装以及IDEA使用_第34张图片

  8. RabbitMQ Linux安装以及IDEA使用_第35张图片

  9. 更换发送消息的序列化格式 RabbitMQ Linux安装以及IDEA使用_第36张图片

    1. 更换转换格式的原理 RabbitMQ Linux安装以及IDEA使用_第37张图片

7.Java方式使用Bean注入,绑定交换机,队列,消息

7.1只适用于接收消息,发送消息仍需测试类

7.2测试类启动,会加载整个SpringBoot

  1. 启动类中注入Bean,完成绑定以及创建交换机和队列

RabbitMQ Linux安装以及IDEA使用_第38张图片

  1. 监听自定义的队列

RabbitMQ Linux安装以及IDEA使用_第39张图片

你可能感兴趣的:(rabbitmq)