洞察管理小程序实例的关键在于实现跨平台能力与数据安全,如何利用FinClip助力企业在数字化转型中既合规又高效?
1329
2022-10-01
Spring Cloud Stream简述
Spring Cloud Stream是创建消息驱动微服务应用的框架,其基于Spring Boot,可以用来构建单独的或者工业级Spring应用。Spring Cloud Stream继承了Spring应用框架的理念,实现了一个基于注解驱动的框架,可以让开发者通过注解的方式,很容易地在应用中实现消息的发布和订阅处理。
Spring Cloud Stream支持与多种消息中间件整合,如Kafka、RabbitMQ等,使用Spring Integration提供与消息代理之间的连接,为应用程序的消息发布和消费提供了一个平台中立的接口,将实现的细节独立于应用代码之外,从而有效简化了上层研发人员对各消息中间件使用上的复杂度,让开发者更加专注于核心业务的处理。
通过Spring Cloud Stream的应用模型框架图来了解一下涉及的几个概念。如下图中所示,在该图中有两个微服务A和B,微服务A会通过Spring Cloud Stream发布消息,而微服务B则是微服务A消息的消费者。
在模型框架图中可以看到,使用Spring Cloud Stream进行消息的发送和消费时涉及下面4个概念。
消息发送通道接口Source
消息发送通道接口用于Spring Cloud Stream与外界通道的绑定,我们可以在该接口中通过注解的方式定义消息通道的名称。当使用该通道接口发送一个消息时,Spring Cloud Stream会将所要发送的消息进行序列化,然后通过该接口所提供的MessageChannel将所要发送的消息发送到相应的消息中间件中。
消息通道Channel
消息通道是对消息队列的一种抽象,用来存放消息发布者发布的消息或者消费者所要消费的消息。在向消息中间件发送消息时,需要指定所要发送的消息队列或主题的名称,而在这里Spring Cloud Stream进行了抽象,开发者只需要定义好消息通道,消息通道具体发送到哪个消息队列则在项目配置文件中进行配置,这样一方面可以将具体的消息队列名称与业务代码进行解耦,另外一方面也可以让开发者方便地根据项目环境切换不同的消息队列。
消息绑定器Binder
Spring Cloud Stream通过定义绑定器作为中间层,实现了应用程序与具体消息中间件细节之间的隔离,向应用程序暴露统一的消息通道,使应用程序不需要考虑与各种不同的消息中间件的对接。当需要升级或者更改不同的消息中间件时,应用程序只需要更换对应的绑定器即可,而不需要修改任何应用逻辑。
Spring Cloud Stream默认提供了对RabbitMQ和Apache Kafka的绑定器,在应用中开发者只需要引入相应的绑定器就可以实现与RabbitMQ或者Kafka的对接,从而进行消息的发送与监听。Spring Cloud Stream会根据类路径自动侦测开发者使用何种绑定器,当然,开发者也可以在项目中同时使用不同的绑定器,只要把相关的依赖代码包含进来即可,甚至可以让项目在运行时动态地将不同的消息通道绑定到不同的绑定器上。
消息监听通道接口Sink
与消息发送通道接口(Source)相似,消息监听通道接口则是Spring Cloud Stream提供应用程序监听通道消息的抽象处理接口。当从消息中间件中接收到一个待处理消息时,该接口将负责把消息数据反序列化为Java对象,然后交由业务所定义的具体业务处理方法进行处理。
Spring Cloud推荐在搭建微服务时,如果微服务之间需要进行通信,应尽量采取发布-订阅模式,避免点对点的调用。这样一方面可以大大减少微服务之间的耦合,另一方面可以保持它们之间的独立性和自治能力。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~