服务异步通信--RabbitMQ

简介: 服务异步通信--RabbitMQ

黑马- SpringCloud微服务技术栈 项目中设计到的服务异步通信,项目部署成功,知识介绍全面。

项目梳理

1.知识点是按照集数依次整理,方便日后回来查找。

2.考虑到不是固定的联网方式,时而WiFi,时而热点,配置静态IP会导致每次网络变更后都需要重新配置,所以虚拟机使用的动态路由,当需要运行相关程序时,IP变化,只需要修改yml文件里的配置即可。

3.将代码路径列举主要是为后续审查。

4.mq的代码路径E:\微服务\实用篇\day04-MQ\资料\mq-demo。

异步通信

1.MQ–RabbitMQ–SpringAMQP(P61)

2.同步调用–优点:时效性较强,可以立即得到结果;缺点:耦合度高、性能和吞吐能力下降、有额外的资源消耗、有级联失败问题。

3.异步调用的实现-事件驱动优势,事件驱动架构-Broker。

4.异步通信–优点:耦合度低、吞吐量提升、故障隔离、流量削峰;缺点:依赖于Broker的可靠性、安全性、吞吐能力、架构复杂了,业务没有明显的流程线,不好追踪管理。

5.MQ(MessageQueue):消息队列,存放消息的队列。

6.RabbitMQ、ActiveMQ、RocketMQ、Kafka的对比分析。(P64)

7.RabbitMQ–部署安装、页面介绍、结构和概念。

# 在线拉取
docker pull rabbitmq:3-management
# 上传好tar包,命令加载镜像
docker load -i mq.tar
# 运行MQ容器
docker run \
 -e RABBITMQ_DEFAULT_USER=itcast \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 --name mq \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3-management
 # 查看全部容器
 docker ps -a
 # 重启后重启容器
docker start mq

1.RabbitMQ部署成功后页面元素分析–channel:操作MQ的工具、exchange:路由消息到队列、queue:缓存消息、virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组。

2.RabbitMQ入门案例–简单队列模型。官方文档-入门案例-publisher:消息发布者,将消息发送到队列;queue:消息队列,负责接收并缓存消息;consumer:订阅队列,处理队列中的消息。

3.基本消息队列的消息发送流程和基本消息队列的消息接收流程。(P67)

4.SpringAMQP–基于AMQP协议定义的一套API规范,提供模板来发送和接受消息;AMQP介绍–应用间消息通信的一种协议,与语言和平台无关。

5.简单队列模型–利用SpringAMQP实现HelloWorld的基础消息队列功能–引入amqp的starter依赖;配置RabbitMQ地址;利用RabbitTemplate的convertAndSend方法来发送消息。(P67)

6.Work queue–工作队列,可以提高消息处理速度,避免队列消息堆积-默认为:消息预取。

7.Work模型–多个消费者绑定到一个队列,同一条消息只会被一个消费者处理;通过设置prefetch来控制消费者预取的消息数量。(P71)

8.发布、订阅模型–允许将同一消息发送给多个消费者。实现方式是加入了exchange(交换机);exchange类型-Fanout:广播、Direct:路由、Topic:话题。(P72)

9.exchange(交换机)作用–接收publisher发送的消息;将消息按照规则路由到与之绑定的队列;负责消息路由,而不是存储,路由失败则消息丢失。

10.Fanout Exchange–将接收到的消息路由到每一个跟其绑定的queue。

11.Direct Exchange–路由模式会将接收到的消息根据规则路由到指定的Queue(每一个Queue都与Exchange设置一个BindingKey);发布者发送消息时,指定消息的RoutingKey;Exchange将消息路由到BindingKey与消息RoutingKey一致的队列。(P74)

12.TopicExchange–与Direct Exchange类似,区别在于routingKey必须是多个单词的列表,并且以 . 分割;Queue与Exchange指定BindingKey时可以使用通配符:#-代指0个或多个单词;*:代指一个单词。

13.消息转换器–SpringAMQP中消息的反序列化和反序列化-利用MessageConverter实现的,默认是JDK的序列化;注意发送方与接收方必须使用相同的MessageConverter。

->微服务技术栈异步通信课程视频

https://www.bilibili.com/video/BV1LQ4y127n4?p=61

<-

学习整理笔记,记录每一个学习瞬间

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
消息中间件 监控 Java
RocketMQ 同步发送、异步发送和单向发送,如何选择?
本文详细分析了 RocketMQ 中同步发送、异步发送和单向发送三种消息发送方式的原理、优缺点及适用场景。同步发送可靠性高但延迟较大,适合订单系统等场景;异步发送非阻塞且延迟低,适用于实时数据处理等场景;单向发送高效但可靠性低,适用于日志收集等场景。文章还提供了示例代码和核心源码分析,帮助读者更好地理解每种发送方式的特点。
308 4
|
6月前
|
消息中间件 测试技术 RocketMQ
消息队列 MQ产品使用合集之在异步发送消息函数sendMessage()中出现了错误,错误代码为-3,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
6月前
|
传感器 数据采集 监控
基于阿里云MQTT服务,设计一个STM32的智能光伏控制系统
这篇文章详细介绍了利用STM32F103C8T6单片机实现光伏发电系统的关键技术。全文分为四章:第一章阐述了光伏发电的背景、意义及应用场景,强调其在绿色能源领域的重要性。第二章介绍了如何通过STM32F103C8T6及光敏电阻和伺服电机实现光线追踪系统,详细描述了硬件选择、连接及使用HAL库编写的单片机程序。第三章讲解了最大功率点追踪(MPPT)的原理,并展示了如何利用STM32F103C8T6和相关传感器、DC-DC转换器实现MPPT功能。第四章描述了如何通过STM32F103C8T6与SIM7600CE 4G模块连接到阿里云MQTT服务,实现设备状态数据的远程传输和控制。本文提供了全面的硬
17745 5
|
3月前
|
消息中间件 Kafka 数据安全/隐私保护
RabbitMQ异步通信详解
RabbitMQ异步通信详解
111 16
EMQ
|
5月前
|
物联网 Linux C语言
在 Windows 平台搭建 MQTT 服务
NanoMQ 有着强大的跨平台和可兼容能力,不仅可以用于以 Linux 为基础的各类平台,也为 Windows 平台提供了 MQTT 服务的新选择。
EMQ
124 7
在 Windows 平台搭建 MQTT 服务
|
4月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
656 0
|
6月前
|
消息中间件 负载均衡 开发工具
消息队列 MQ产品使用合集之当一个服务出现堆积后,为什么不把后面的流量负载到其它服务上
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ产品使用合集之当一个服务出现堆积后,为什么不把后面的流量负载到其它服务上
|
4月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
96 0