Apache Pulsar Support
通过提供 {url-spring-pulsar-site}[Spring for Apache Pulsar] 项目的自动配置来支持 Apache Pulsar。
当 org.springframework.pulsar:spring-pulsar
在类路径上时,Spring Boot 将自动配置和注册传统的(命令式)Spring for Apache Pulsar 组件。当 org.springframework.pulsar:spring-pulsar-reactive
在类路径上时,它将对响应式组件执行相同的操作。
有 spring-boot-starter-pulsar
和 spring-boot-starter-pulsar-reactive
“Starters”,分别用于方便地收集命令式和响应式使用的依赖项。
Connecting to Pulsar
当你使用 Pulsar starter 时,Spring Boot 将自动配置和注册 PulsarClient
Bean。
默认情况下,应用程序尝试连接到 pulsar://localhost:6650
的本地 Pulsar 实例。这可以通过将 configprop:spring.pulsar.client.service-url[] 属性设置为其他值来调整。
值必须是有效的 Pulsar Protocol URL |
你可以通过指定任何以 spring.pulsar.client.*
为前缀的应用程序属性来配置客户端。
如果需要更多地控制配置,请考虑注册一个或多个 PulsarClientBuilderCustomizer
Bean。
Authentication
若要连接到需要身份验证的 Pulsar 集群,你需要通过设置 pluginClassName
和插件所需的任何参数来指定要使用的身份验证插件。你可以将参数设置为参数名称到参数值的映射。以下示例显示如何配置 AuthenticationOAuth2
插件。
spring: pulsar: client: authentication: plugin-class-name: org.apache.pulsar.client.impl.auth.oauth2.AuthenticationOAuth2 param: issuerUrl: https://auth.server.cloud/ privateKey: file:///Users/some-key.json audience: urn:sn:acme:dev:my-instance
你需要确保 |
Connecting to Pulsar Reactively
当激活了 Reactive 自动配置后,Spring Boot 将自动配置并注册一个 ReactivePulsarClient
bean。
ReactivePulsarClient
适配之前描述的 PulsarClient
的一个实例。因此,请按照上一节配置 ReactivePulsarClient
所使用的 PulsarClient
。
Connecting to Pulsar Administration
Spring for Apache Pulsar 的 PulsarAdministration
客户端也已自动配置。
默认情况下,该应用程序尝试连接到 http://localhost:8080
的本地 Pulsar 实例。可以通过在 (http|https)://<host>:<port>
中将 configprop:spring.pulsar.admin.service-url[] 属性设置为其他值来调整这一配置。
如果您需要进一步控制配置,请考虑注册一个或多个 PulsarAdminBuilderCustomizer
bean。
Authentication
当访问需要身份验证的 Pulsar 集群时,管理客户端需要与常规 Pulsar 客户端相同的安全配置。您可以使用前文提到的 authentication configuration ,通过用 spring.pulsar.admin.authentication
替换 spring.pulsar.client.authentication
。
要创建启动时的主题,请添加一个 |
Sending a Message
Spring 的 PulsarTemplate
已自动配置,您可以使用它发送消息,如下例所示:
PulsarTemplate
依赖 PulsarProducerFactory
来创建基础 Pulsar 制造者。Spring Boot 自动配置也提供此生产程序工厂,默认情况下,它缓存其创建的生产程序。您可以在指定任何以 spring.pulsar.producer.
and spring.pulsar.producer.cache.
为前缀的应用程序属性时配置生产程序工厂和缓存设置。
如果您需要进一步控制生产程序工厂配置,请考虑注册一个或多个 ProducerBuilderCustomizer
bean。这些自定义器应用于所有已创建的生产程序。您还可以在发送消息时传递一个 ProducerBuilderCustomizer
,以仅影响当前生产程序。
如果您需要进一步控制正在发送的消息,则可以在发送消息时传递一个 TypedMessageBuilderCustomizer
。
Sending a Message Reactively
当激活了 Reactive 自动配置后,Spring 的 ReactivePulsarTemplate
已自动配置,您可以使用它发送消息,如下例所示:
ReactivePulsarTemplate
依赖 ReactivePulsarSenderFactory
来实际创建基础发送器。Spring Boot 自动配置也提供此发送器工厂,默认情况下,它缓存其创建的生产程序。您可以在指定任何以 spring.pulsar.producer.
and spring.pulsar.producer.cache.
为前缀的应用程序属性时配置发送器工厂和缓存设置。
如果您需要进一步控制发送器工厂配置,请考虑注册一个或多个 ReactiveMessageSenderBuilderCustomizer
bean。这些自定义器应用于所有已创建的发送器。您还可以在发送消息时传递一个 ReactiveMessageSenderBuilderCustomizer
,以仅影响当前发送器。
如果您需要进一步控制正在发送的消息,则可以在发送消息时传递一个 MessageSpecBuilderCustomizer
。
Receiving a Message
当 Apache Pulsar 基础设施存在时,可以使用 @PulsarListener
注释任何 bean 以创建一个侦听器端点。以下组件在 someTopic
主题上创建了一个侦听器端点:
Spring Boot 自动配置为 PulsarListener
提供了所有必需的组件,例如 PulsarListenerContainerFactory
以及它用来构建基础 Pulsar 消费者的使用者工厂。您可以在指定任何以 spring.pulsar.listener.
and spring.pulsar.consumer.
为前缀的应用程序属性时配置这些组件。
如果您需要进一步控制使用者工厂配置,请考虑注册一个或多个 ConsumerBuilderCustomizer
bean。这些自定义器应用于工厂创建的所有使用者,因此也应用于所有 @PulsarListener
实例。您还可以通过设置 @PulsarListener
注释的 consumerCustomizer
属性来自定义单个侦听器。
Receiving a Message Reactively
当 Apache Pulsar 的基础结构存在且 Reactive 自动配置被激活后,可以使用 @ReactivePulsarListener
注释任何 bean 以创建一个响应性侦听器端点。以下组件在 someTopic
主题上创建了一个响应性侦听器端点:
Spring Boot 自动配置为 ReactivePulsarListener
提供所有必要的组件,例如 ReactivePulsarListenerContainerFactory
和用于构建底层反应式 Pulsar 消费者的消费器工厂。您可以通过指定带有 spring.pulsar.listener.
and spring.pulsar.consumer.
前缀的任何应用程序属性来配置这些组件。
如果您需要对消费者工厂配置进行更多控制,请考虑注册一个或多个 ReactiveMessageConsumerBuilderCustomizer
Bean。这些定制器应用于工厂创建的所有消费者,因此也应用于所有 @ReactivePulsarListener
实例。您还可以通过设置 @ReactivePulsarListener
注释的 consumerCustomizer
属性来定制单个侦听器。
Reading a Message
Pulsar reader 接口使应用程序能够手动管理游标。当您使用 reader 连接到主题时,您需要指定 reader 在连接到主题时开始读取哪条消息。
当 Apache Pulsar 基础设施存在时,任何 bean 都可以通过使用 reader 注释上 @PulsarReader
来使用 reader 来使用消息。以下组件会创建一个 reader 端点,从 someTopic
主题的开头开始读取消息:
@PulsarReader
依赖 PulsarReaderFactory
来创建底层 Pulsar reader。Spring Boot 自动配置提供此 reader 工厂,可以通过设置带有 spring.pulsar.reader.*
前缀的任何应用程序属性来对其进行定制。
如果您需要对 reader 工厂配置进行更多控制,请考虑注册一个或多个 ReaderBuilderCustomizer
Bean。这些定制器应用于工厂创建的所有 reader,因此也应用于所有 @PulsarReader
实例。您还可以通过设置 @PulsarReader
注释的 readerCustomizer
属性来定制单个侦听器。
Reading a Message Reactively
当 Apache Pulsar 基础设施存在且反应式自动配置已启用时,Spring 的 ReactivePulsarReaderFactory
将得到提供,您可以使用它创建 reader 以反应式的方式读取消息。以下组件使用所提供的工厂创建一个 reader,并从 someTopic
主题中读取 5 分钟前的单条消息:
Spring Boot 自动配置提供此 reader 工厂,可以通过设置带有 spring.pulsar.reader.*
前缀的任何应用程序属性来对其进行定制。
如果您需要对 reader 工厂配置进行更多控制,请考虑在使用工厂创建 reader 时传递一个或多个 ReactiveMessageReaderBuilderCustomizer
实例。
如果您需要对 reader 工厂配置进行更多控制,请考虑注册一个或多个 ReactiveMessageReaderBuilderCustomizer
Bean。这些定制器应用于所有已创建的 reader。您还可以创建一个或多个 `ReactiveMessageReaderBuilderCustomizer`来只对所创建的 reader 应用定制。
有关上述任何组件的更多详细信息以及了解其他可用功能,请参见 Spring for Apache Pulsar {url-spring-pulsar-docs}[参考资料文档]。 |
Additional Pulsar Properties
自动配置所支持的属性显示在附录的 “Integration Properties” 部分中。请注意,对于大部分属性(连字符或驼峰式)都直接映射到 Apache Pulsar 配置属性。有关详细信息,请参见 Apache Pulsar 文档。
仅 Apache Pulsar 支持的部分属性可通过 PulsarProperties
类直接使用。如果您希望使用未直接支持的附加属性微调自动配置的组件,您可使用前面提及的每个组件所支持的定制器。