第 16 章 服务集成(2)
丁雪丰
16.2 使用消息中间件进行异步通信
在本书前面的所有章节中,我们的交互几乎是同步的,而且服务的消费者明确地知道自己要调用的服务到底是谁,以及它们在哪里。然而,在日常工作中,除了同步通信,还经常会用到基于消息中间件的异步通信方式。在这一节里,就让我们来了解下如何在 Spring 工程中进行异步消息通信。
16.2.1 为什么要使用基于消息的异步通信
基于消息的异步通信有三个明显的优势。第一个优势是提供了服务解耦的能力。在同步调用中,上下游是紧密关联在一起的,系统 B 需要系统 A 的一个通知,那就必须在系统 A 的代码里进行硬编码,对系统 B 发起一个调用。如果日后系统 B 不再需要这个通知,那系统 A 还要进行代码变更,万一系统 B 出问题,系统 A 的执行就会失败,这就是耦合。如果两者不直接交互,而是系统 A 将通知发给消息中间件,系统 B 从消息中间件消费,那它们的关系就没那么紧密了。不管系统 B 能不能正常工作,系统 A 只是和消息中间件打交道,并不会感知系统 B 的状态。即使系统 B 不再需要这个通知,系统 A 依然可以继续向消息中间件发消息,系统 B 不接收就好了。更重要的是,如果来了个系统 C 也需要一样的通知,同样从消息中间件获取即可,就不用再修改系统 A 了,就像图 16-3 那样。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入介绍了在Spring工程中使用消息中间件进行异步通信的重要性和优势。通过消息中间件实现系统之间的松耦合,避免硬编码和系统间的直接交互,提高系统的灵活性和可维护性。异步通信还能提供异步处理的能力,通过将非必需的步骤从主干中剥离,改为异步执行,提升系统的响应性能和成功率。同时,异步通信还能提供削峰填谷的能力,在面临流量高峰时,通过将一部分不需要及时处理的步骤暂时积压到消息中间件里,可以有效应对系统压力。 文章还详细介绍了使用Spring AMQP来利用RabbitMQ进行消息通信的方法,以及AMQP的核心概念和RabbitMQ的Exchange类型。通过代码示例,读者可以了解消息的生产者和消费者的实现过程,以及如何配置消息转换器和RabbitMQ服务端信息。 此外,文章还介绍了Spring Cloud Stream框架,它提供了对消息中间件的抽象,屏蔽了不同底层实现之间的差异,使得消息的生产者和消费者可以对应到Java的函数类型,并且简化了消息的投递逻辑。通过Spring Cloud Stream,读者可以更加方便地编写消息通信相关的代码。 总的来说,本文为读者提供了在Spring工程中实现异步通信的全面指南,同时还介绍了Spring Cloud Stream框架,为读者提供了更加便捷的消息通信解决方案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《学透 Spring:从入门到项目实战》
《学透 Spring:从入门到项目实战》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论