响应式支持
该框架为几乎所有支持的功能提供了 Reactive 的对应实现。
如果你在一个提供的命令式组件前加上 Reactive
这个词,你很可能会找到它的 Reactive 对应组件。
-
PulsarTemplate → ReactivePulsarTemplate
-
PulsarListener → ReactivePulsarListener
-
PulsarConsumerFactory → ReactivePulsarConsumerFactory
-
等等...
然而,以下功能目前尚不支持:
-
非共享订阅中的错误处理
-
在流模式下通过
@Header
访问 Pulsar 头信息 -
观察结果
前言
我们建议为基于 Spring for Apache Pulsar 的应用程序采用 Spring-Boot-First 方法,因为这将极大地简化操作。为此,你可以将 spring-pulsar-reactive-spring-boot-starter
模块添加为依赖项。
本参考文档的大部分内容假设读者正在使用 starter,并据此提供了大部分的配置指导。然而,在说明特定于 Spring Boot starter 使用的指令时,我们会特别指出。
章节摘要
📄️ 快速入门
我们将通过展示一个以 Reactive 方式生产和消费的 Spring Boot 示例应用程序,快速浏览 Spring 对 Apache Pulsar 的 Reactive 支持。这是一个完整的应用程序,只要你在默认位置(localhost:6650)上运行了一个 Pulsar 集群,就不需要任何额外的配置。
📄️ 设计
以下是几个需要牢记的关键设计要点。
📄️ 响应式 Pulsar 客户端
当你使用 Reactive Pulsar Spring Boot Starter 时,ReactivePulsarClient 会自动配置。
📄️ 消息生产
在 Pulsar 生产者端,Spring Boot 自动配置提供了一个 ReactivePulsarTemplate 用于发布记录。该模板实现了一个名为 ReactivePulsarOperations 的接口,并通过其契约提供了发布记录的方法。
📄️ 消息消费
当涉及到 Pulsar 消费者时,我们建议最终用户应用程序使用 ReactivePulsarListener 注解。要使用 ReactivePulsarListener,你需要使用 @EnableReactivePulsar 注解。当你使用 Spring Boot 支持时,它会自动启用这个注解并配置所有必要的组件,例如消息监听器基础设施(负责创建底层的 Pulsar 消费者)。
📄️ 空负载与“墓碑”记录的日志压缩
在使用日志压缩时,你可以发送和接收带有空负载的消息来标识键的删除。你也可能因为其他原因接收到空值,例如当反序列化器无法反序列化一个值时可能会返回空值。