RabbitMQ学习使用

RabbitMQ的认识和API使用

RabbitMQ的认识和API使用

一、手动连接版(生产者和消费者都需要用代码来连接RabbitMQ)

1、RabbitMQ连接模型之------直连模型

(1)引入maven依赖,直连模型介绍

在这里插入图片描述

(2)封装连接相关的工具类

在这里插入图片描述

(3)"生产者"使用工具类连接MQ并发送消息

在这里插入图片描述

(4)"消费者"使用工具类连接MQ并接收消息

在这里插入图片描述

2、RabbitMQ连接模型之------任务模型

(1)任务模型介绍

在这里插入图片描述
以上是平均分配消息,若两个消费者消费时间不一样,需要实现“能者多劳”,则需要关闭自动确认,当消费了某条消息后手动确认:
在这里插入图片描述

(2)工具类同上
(3)"生产者"使用工具类连接MQ并发送消息

在这里插入图片描述

(4)"消费者"使用工具类连接MQ并接收消息

1号消费者
在这里插入图片描述
消费结果:
在这里插入图片描述

2号消费者
在这里插入图片描述
消费结果:
在这里插入图片描述

3、RabbitMQ连接模型之------订阅发布的广播模型

(1)模型介绍

适用场景:不同系统需要同时订阅某消息
在这里插入图片描述

(2)工具类同上
(3)"生产者"使用工具类连接MQ并发送消息

在这里插入图片描述

(4)"消费者"使用工具类连接MQ并接收消息

1号消费者
在这里插入图片描述
2、3号消费者和1号消费者代码一样
在这里插入图片描述

4、RabbitMQ连接模型之------路由模型

(1)模型介绍

应用场景:生产者发送消息,消费者1接收队列routing key为error的消息,消费者2接收队列的routing key为iofo和error、warning的消息
在这里插入图片描述

(2)工具类同上
(3)"生产者"使用工具类连接MQ并发送消息

在这里插入图片描述

(4)"消费者"使用工具类连接MQ并接收消息

1号消费者接收"error"
在这里插入图片描述
2号消费者接收"info、error、warning"
在这里插入图片描述

4、RabbitMQ连接模型之------动态路由模型

(1)模型介绍

应用场景,可对routing key 进行通配符匹配,比如生产者发送到"user.save"的key中,消费者1消费"user.*",消费者2消费"user.#"
在这里插入图片描述

(2)工具类同上
(3)"生产者"使用工具类连接MQ并发送消息

在这里插入图片描述

(4)"消费者"使用工具类连接MQ并接收消息

1号消费者接收"user.*"(一个*代表一个任意单词)
在这里插入图片描述

2号消费者接收"user.#"(一个#代表0到多个任意单词,即只要包含user的都匹配得到)
在这里插入图片描述

二、springboot集成版

1、使用步骤

(1)AmqpAdmin的使用
  • 不在操作界面,用代码来创建交换机Exchange、队列Queue、绑定Binding
    1、引入mavne的amqp依赖
    2、在配置文件里配置连接信息
    在这里插入图片描述
    3、启动类加上@EnableRabbit开启功能
    4、创建交换机Exchange、队列Queue、绑定Binding
    在这里插入图片描述
(2)RabbitTemplate的使用
  • 用来收发消息
    在这里插入图片描述
(3)springboot使用mq时补充说明

1、在启动类上加入@EnableRabbit注解
2、如果需要将生产者发送的消息序列化成JSON,可以新建配置类MyRabbitConfig
在这里插入图片描述
3、使用@RabbitListener,必须有@EnableRabbit注解
4、发送的消息不一定是字符串类型,还可以是自己的JavaBean
在这里插入图片描述
5、接收消息时,如果需要整个消息的全部信息,包括消息头、消息体,可以使用Message类作第一个参数接收,获取消息信息可以直接在第二个参数获取,第三个参数是获取通道信息的参数
在这里插入图片描述
6、@RabbitListener和@RabbitHandler的区别。
文字描述:当生产者发送了两个不同的java类型数据,这时就可以在类上使用@RabbitListener监听队列,在方法上使用@RabbitHandler处理不同实体类消息
在这里插入图片描述
在这里插入图片描述
7、消息确认机制。
①发送端(生产者)的相关确认机制
(1)开启发送端(生产者)确认。
说明:生产者发送到Broker代理后就确认,不会等到消息进入指定队列,更不会到消费者消费消息
1.在配置文件加上spring.rabbitmq.publisher-confirms=true
2.配置类MyRabbitConfig中设置确认回调函数
在这里插入图片描述
(2)发送端(生产者)将消息发送到指定队列时的确认回调。
说明:只有将消息发送到指定队列失败才会进入这个回调,比如发送到了某个不存在的队列中
1.在配置文件加上spring.rabbitmq.publisher-returns=truespring.rabbitmq.template.mandatory=true
2.配置类MyRabbitConfig中设置确认回调
在这里插入图片描述
②接收者(消费者)确认机制
说明:默认情况下是自动确认的,会出现收到消息但没消费完消息就被删除的情况,导致数据丢失。实现确认机制目的是,在消费者确认消费完消息时,Broker才会删除消息,保证消息都被正确消费。
(1)消费者接收并消费完消息后手动确认
1.在配置文件加上spring.rabbitmq.listener.simple.acknowledge-mode=manual
2.在上面的补充说明第五点中有一个通道Channel channel参数,使用channel.basicAck()
在这里插入图片描述
消息确认机制总结:
在这里插入图片描述
8、死信的相关概念
在这里插入图片描述
死信队列的创建代码
在这里插入图片描述

说明:springboot内置了一个简化操作rabbitmq的模板对象RabbitTemplate,直接注入即可使用

2、springboot直连模型使用

生产者代码
在这里插入图片描述
消费者代码
在这里插入图片描述

3、springboot任务模型使用

生产者代码(生产十条消息,消费者1、2平均消费)
在这里插入图片描述
消费者1、2号
在这里插入图片描述

运行结果:
在这里插入图片描述

4、springboot广播模型使用

生产者代码
在这里插入图片描述
消费者1、2号代码
在这里插入图片描述

5、springboot路由模型使用

生产者代码
在这里插入图片描述
消费者1、2号代码
在这里插入图片描述

6、springboot动态路由模型使用

生产者代码
在这里插入图片描述
消费者1、2号代码
在这里插入图片描述

RabbitMQ使用场景分析

在这里插入图片描述

RabbitMQ集群

一、普通集群

在这里插入图片描述

二、镜像集群

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值