SpringBoot 开发实用篇
文章目录
- SpringBoot
- SpringBoot 开发实用篇
- 5 整合第三方技术
- 5.18 消息简介
- 5.18.1 消息
- 5.18.2 技术介绍
- 5.18.3 小结
5 整合第三方技术
5.18 消息简介
5.18.1 消息
古代,烽火戏诸侯【当然我们不是谈历史,烽火台就是为了传递消息建的】
【两个主体】
- 消息发送方
- 生产者
- 消息接收方
- 消费者
【消息的模式】
同步消息:我【发送方】发一句后,对方【接收方】回应后,我再发【就是得在收到响应结果后,再往下进行】
异步消息:不用等接收方确认,我只管发我的【这种模式应用面更广,毕竟如果接收方不理你了,那就卡住了】
【编程中消息的应用场景】
假设有一次浏览器发了特多请求给系统,这个时候服务器压力就会很大
这个时候服务器就想,它找几个帮手帮助它,这样就有了若干个子服务器
这个就需要一个桥梁,来保存消息,这个时候主业务系统将消息发给 MQ,然后子业务系统再到MQ 中去取要执行的业务操作信息
这样的话,整个流程中要执行的工作,都转换成了消息的格式存在。
小结来说, 就是我们的服务器在接收到大量的请求后,它把所有的请求任务转换成消息,然后找个地方放起来,对应的子系统就从MQ 中去把要执行的工作取出来,然后处理,这样就可以有效降低主业务系统的压力
“中间”这个东西,就是“消息队列” MQ(Message Queue)
- 企业级应用中广泛使用的三种异步消息传递技术
- JMS
- AMQP
- MQTT
5.18.2 技术介绍
【JMS】
JMS(Java Message Service):一个规范,等同于JDBC规范,提供了与消息服务相关的API接口
JMS消息模型:
- peer-2-peer:点对点模型,消息发送到一个队列中,队列保存消息。队列的消息只能被一个消费者消费,或超时【一对一】
- publish-subscribe:发布订阅模型,消息可以被多个消费者消费,生产者和消费者完全独立,不需要感知对方的存在
JMS消息种类:
- TextMessage
- MapMessage
- BytesMessage
- StreamMessage
- ObjectMessage
- Message (只有消息头和属性)
JMS实现:ActiveMQ、Redis、HornetMQ、RabbitMQ、RocketMQ(没有完全遵守JMS规范)
【AMQP】
AMQP(advanced message queuing protocol):一种协议(高级消息队列协议,也是消息代理规范),规范了网络交换的数据格式,兼容JMS 【这个就拉近了各语言】
优点:具有跨平台性,服务器供应商,生产者,消费者可以使用不同的语言来实现
AMQP消息模型:
- direct exchange
- fanout exchange
- topic 【关注】exchange
- headers exchange
- system exchange
AMQP消息种类:byte[]
AMQP实现:RabbitMQ、StormMQ、RocketMQ
【MQTT】
MQTT(Message Queueing Telemetry Transport)消息队列遥测传输,专为小设备设计,是物联网(IOT)生态系统中主要成分之一。
【Kafka】
Kafka,一种高吞吐量的分布式发布订阅消息系统,提供实时消息功能。【终于遇到你了,久仰大名】
【我们会做的东西】
- ActiveMQ
- RabbitMQ
- RocketMQ
- Kafka
好!迫不及待!!
5.18.3 小结
- 消息概念与作用
- JMS
- AMQP
- MQTT