消息驱动/Stream介绍
1、关于消息驱动
消息驱动Bean
用于处理企业之间的消息通信,SpringCloud提供了相关模块,基于这些模块可以在微服务中构建消息应用,让微服务可以与其他服务组件进行消息通信
消息代理中间件
2、消息代理程序结构
- 目前市面上有很多消息代理中间件,如ActivitiMQ、RabbitMQ
- 在使用这些消息代理中间件的时候,我们需要使用其API进行消息的发送与接收
- 消息中间件用来维护消息
- (为什么不直接发送,还经过消息中间件?)因为当消息生产者/消费者过多,则它们之间的关系就会混乱,可以将消息中间件理解为“邮局”
3、使用Stream后的程序结构
SpringCloud提供了Stream框架
在微服务中帮我们简化消息开发
- 真正连接RabbitMQ中间件就是Stream
- 目前Stream提供了RabbitMQ和Kafka两个消息代理实现,可以通过配置使用这两个消息代理
4、RabbitMQ与AMQP
RabbitMQ
轻量级消息代理中间件
支持多种消息协议、分布式部署AMQP
协议,类似HTTP似的协议
高级消息队列协议
定义了消息客户端与消息中间件之间的协议
基于这个协议,消息客户端与消息中间之间的开发不受开发语言与具体产品的约束
5、Kafka介绍
Topic
内部使用Topic保存数据,生产者的消息会被发送至Topic中,Topic保存各类的数据,每一条数据都是使用键值保存,在一个Topic下包含一个或者多个物理分区,物理分区中保存数据内容和索引,有可能会保存在不同的服务器中,对于客户端而言,只需要关心消息被发送到哪个Topic
键值保存数据
- Apache下用于分布式处理数据流的框架,有容错、水平拓展等特性