消息中间件 定义以及作用
消息中间件的作用是为了:
1.解耦:
2.异步:
3.横向扩展
4.安全可靠;
5可以保证顺序(Kafka)
什么是消息中间件:关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统。
关注与数据的发送和接收,利用高效的可靠地异步消息传递机制集成分布式系统、
分布式系统
1.组件分布在网络计算机上
2.组件之间通过消息来协调行动
中间件:
专注自己的业务逻辑,简化应用程序之间的通信、IO的开发(提供OS服务之外的服务),是应用与应用之间的桥梁。。
分布式消息中间件
指的是消息中间件本身也是一个分布式系统
分布式消息中间件能做什么:解决分布式系统之间的通信问题。
好处:
解耦(不需要了解其他 只需执行发布或者接收消息(有点像发短信服务)),异步
削峰填谷:比如上游系统的吞吐能力高于下游系统,在流量洪峰时可能会冲垮下游系统,消息中间件可以在峰值时堆积消息,而在峰值过去后下游系统慢慢消费消息解决流量洪峰的问题
事件驱动:系统与系统之间可以通过消息传递的形式驱动业务,以流式的模型处理
JMS
Java Message Service —java消息服务
是一个java平台中关于面向消息中间件的API,用于在两个应用程序之间或者分布式系统中发送消息,进行异步通信。
常见的消息中间件对比:
都支持数据持久化
JMS规范:
提供者:实现JMS规范的消息中间件服务器;
客户端:发送or接收消息的应用程序;
生产者、发布者:创建并发布消息的客户端。
消费者、订阅者:接收并处理消息的客户端;
消息:应用程序之间传递的数据内容;
消息模式:在客户端之间传递消息的方式,JMS中定义了主题和队列两种模式。
JMS中的消息模式
根据上图可以看出,队列模式中,两种应用均摊所有的JMS队列。
主题模型中,订阅者需要提前去订阅JMS主题,并且每一个应用收到的消息是完整的消息。
JMS编码接口
一个Connection可以创建多个Session,Session中是一个会话就只有一个。
整个流程:
其他详解见另一个博客:https://blog.youkuaiyun.com/leexide/article/details/80035462