Spring Cloud Stream介绍
Spring Cloud Stream是创建消息驱动微服务应用的框架。Spring Cloud Stream是基于spring boot创建,用来建立单独的/工业级spring应用,使用spring integration提供与消息代理之间的连接。本文提供不同代理中的中间件配置,介绍了持久化发布订阅机制,以及消费组以及分割的概念。 将注解@EnableBinding加到应用上就可以实现与消息代理的连接,@StreamListener注解加到方法上,使之可以接收处理流的事件。
原版:
翻译:
PS:生产者yml配置
PS: Barista接口为自定义管道
PS: 生产者消息投递
PS: Spring Boot应用入口
PS:消费者yml配置
PS: Barista接口为自定义管道
PS: 消费者消息获取
PS: Spring Boot应用入口
SpringCloud(25)——Stream介绍
当我们的分布式系统建设到一定程度了,或者服务间是通过异步请求来通讯的,那么我们避免不了使用MQ来解决问题。
假如公司内部进行了业务合并或者整合,需要服务A和服务B通过MQ的方式进行消息传递,而服务A用的是RabbitMQ,服务B用的是Kafka,那么我要在服务里同时使用两个消息组件吗?
有没有一种技术让我们不再关注具体MQ的细节,只需要用一种适配绑定的方式呢?
当然有,cloud Stream就解决了这个问题。
官网地址:
官方定义SpringCloud Stream是一个构建消息驱动微服务的框架。
应用程序通过inputs或者outputs来与SpringCloud Stream中的binder对象交互。
通过我们配置来binding(绑定),而SpringCloud Stream的binder对象负责与消息中间件交互。
所以,我们只需要搞清楚如何与SpringCloud Stream交互就可以方便使用消息驱动的方式。
而通过Spring Interation来连接消息代理中间件以实现消息事件驱动。
SpringCloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。
但是目前仅支持RabbitMQ、Kafka
在没有绑定器这个概念的情况下,我们的SpringBoot应用
要直接与消息中间件进行信息交互的时候,由于各消息中间件构建的初衷不同,它们的实现细节上会有较大的差异性。
通过定义绑定器作为中间层,完美地实现了 应用程序与消息中间件细节之间的隔离 。
通过向应用程序暴漏统一的Channel通道,使得应用程序不需要再考虑各种不同的消息中间件实现。
通过定义绑定器Binder作为中间层,实现了应用程序与消息中间件细节之间的隔离
Binder:很方便的连接中间件,屏蔽差异
Channel:通道,是队列Queue的一种抽象,在消息通讯系统中就是实现存储和转发的媒介,通过Channel对队列进行配置。
Source和Sink:简单的可理解为参照对象是SpringCloud Stream自身,从Stream发布消息就是输出,接受消息就是输入。
SpringCloud | 消息驱动——Stream
在微服务的架构下,原有单一的应用被拆分成了多个服务,所以微服务之间的消息传递也越来越频繁。
为了解决这个问题,就选择消息中间件——Stream。
通过消息中间件就可以存储和转发微服务之间的异步数据,使得微服务之间不用直接通信,从而使微服务的应用集中在一处。
当微服务A向微服务B发送消息时,若网络不可用或微服务B不在线,则消息中间件会存储消息,直到连接变得可用或微服务B恢复,消息中间件在将消息转发到微服务B上。
这样就保障了消息的可靠性,同时,也避免了微服务A等待微服务B处理消息而造成等待阻塞,能够保证系统故障时消息的正常传输。
同时Spring Cloud Stream支持多种消息中间件的整合,例如:Kafka、RabbitMQ等;继承了Spring应用的框架理念,实现基于注解驱动框架。
1、什么是消息驱动开发
2、Spring Cloud Stream简介
3、使用“发布-订阅”模式
每一个 不曾起舞的日子,都是对生命的辜负。一个人知道自己为什么而活,就可以忍受任何一种生活。其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。