- 内容提要
- 译者序
- 前言
- 第 1 章 欢迎迈入云世界,Spring
- 第 2 章 使用 Spring Boot 构建微服务
- 第 3 章 使用 Spring Cloud 配置服务器控制配置
- 第 4 章 服务发现
- 第 5 章 使用 Spring Cloud 和 Netflix Hystrix 的客户端弹性模式
- 第 6 章 使用 Spring Cloud 和 Zuul 进行服务路由
- 第 7 章 保护微服务
- 第 8 章 使用 Spring Cloud Stream 的事件驱动架构
- 第 9 章 使用 Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪
- 第 10 章 部署微服务
- 附录 A 在桌面运行云服务
- 附录 B OAuth2 授权类型
8.2 Spring Cloud Stream 简介
Spring Cloud 可以轻松地将消息传递集成到基于 Spring 的微服务中,它是通过 Spring Cloud Stream 项目来实现这一点的。Spring Cloud Stream 是一个由注解驱动的框架,它允许开发人员在 Spring 应用程序中轻松地构建消息发布者和消费者。
Spring Cloud Stream 还允许开发人员抽象出正在使用的消息传递平台的实现细节。Spring Cloud Stream 可以使用多个消息平台(包括 Apache Kafka 项目和 RabbitMQ),而平台的具体实现细节则被排除在应用程序代码之外。在应用程序中实现消息发布和消费是通过平台无关的 Spring 接口实现的。
注意
在本章中,读者将使用名为 Kafka 的轻量级消息总线。Kafka 是一种轻量级、高性能的消息总线,允许开发人员异步地将消息从一个应用程序发送到一个或多个其他应用程序。Kafka 是用 Java 编写的,由于 Kafka 具有高可靠性和可伸缩性,在许多基于云的应用程序中,它已经成为事实上的标准消息总线。此外,Spring Cloud Stream 还支持使用 RabbitMQ 作为消息总线。Kafka 和 RabbitMQ 都是强大的消息平台,我在本书中选择了 Kafka,因为它是我最熟悉的。
要了解 Spring Cloud Stream,让我们从 Spring Cloud Stream 的架构开始讨论,并熟悉 Spring Cloud Stream 的术语。如果读者以前从未使用过基于消息传递的平台,那么接下来所涉及的新术语可能会有些令人难以理解。
Spring Cloud Stream 架构
让我们以通过消息传递进行通信的两个服务的角度来查看 Spring Cloud Stream 的架构。在这两个服务中,一个是消息发布者,另一个是消息消费者。图 8-3 展示了如何使用 Spring Cloud Stream 来帮助消息传递。
图 8-3 随着消息的发布和消费,它将流经一系列的 Spring Cloud Stream 组件,这些组件抽象出底层消息传递平台
随着 Spring Cloud 中消息的发布和消费,有 4 个组件涉及发布消息和消费消息,它们是:
- 发射器(source);
- 通道(channel);
- 绑定器(binder);
- 接收器(sink)。
1.发射器
当一个服务准备发布消息时,它将使用一个发射器发布消息。发射器是一个 Spring 注解接口,它接收一个普通 Java 对象(POJO),该对象代表要发布的消息。发射器接收消息,然后序列化它(默认的序列化是 JSON)并将消息发布到通道。
2.通道
通道是对队列的一个抽象,它将在消息生产者发布消息或消息消费者消费消息后保留该消息。通道名称始终与目标队列名称相关联。然而,队列名称永远不会直接公开给代码,相反,通道名称会在代码中使用。这意味着开发人员可以通过更改应用程序的配置而不是应用程序的代码来切换通道读取或写入的队列。
3.绑定器
绑定器是 Spring Cloud Stream 框架的一部分,它是与特定消息平台对话的 Spring 代码。Spring Cloud Stream 框架的绑定器部分允许开发人员处理消息,而不必依赖于特定于平台的库和 API 来发布和消费消息。
4.接收器
在 Spring Cloud Stream 中,服务通过一个接收器从队列中接收消息。接收器监听传入消息的通道,并将消息反序列化为 POJO。从这里开始,消息就可以按照 Spring 服务的业务逻辑来进行处理。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论