Apache Pulsar 的实验性 Spring 支持

工程 | Soby Chacko | 2022年8月16日 | ...

我们很高兴地宣布,我们正在孵化一个新的实验性 Spring 项目 用于 Apache Pulsar。该项目旨在提供 Spring 友好的 API、构建块和编程模型,用于编写与 Apache Pulsar 交互的 Java 应用程序。

Apache Pulsar 是一个流行的消息系统,在企业消息和流式处理领域拥有越来越多的开发者生态系统。以下是使用 Apache Pulsar 进行基于消息的软件应用程序的一些主要功能和优势

  • Apache Pulsar 提供了 RabbitMQ、ActiveMQ 等的传统队列语义,以及通过各种订阅模型提供的 Apache Kafka 的基于日志的结构。
  • Apache Pulsar 中的代理是无状态的,存储不属于代理的一部分。相反,它使用另一个名为 Bookkeeper 的 Apache 项目来将存储层与代理分离。由于这种基本设计,扩展 Apache Pulsar 代理非常容易。
  • Apache Pulsar 使用分布式日志(称为账本),通过 Bookkeeper 利用这些账本。这些账本分布在 Bookkeeper 的多个节点上。
  • 将存储层(账本)与服务层(代理)分离的另一个优势是它们可以分别扩展。
  • 主题分区是一项功能,而不是一项要求。只有在用例需要时才需要使用分区。
  • 内置地理复制机制。
  • 内置多租户功能。

历史上,Spring 为流行的基于 JVM 的消息系统提供了全面的支持。JMS 支持是 Spring Framework 核心的一部分。Spring 通过其在 Spring 生态系统中的相关对应物——Spring AMQPSpring for Apache Kafka——提供了对 AMQP 和 Kafka 的广泛支持。此外,各种与消息相关的支持可在流行的 Spring 项目中使用,例如Spring IntegrationSpring Cloud Stream。由于 Apache Pulsar 正在成为一个越来越重要的消息代理,我们开始使用Apache Pulsar 的 Java 客户端 实验一个专门用于它的新 Spring 项目。

从应用程序开发者的角度来看,Apache Pulsar 提供了许多与 Apache Kafka 相同的功能,例如创建生产者以发布消息、创建消费者以消费消息等等。因此,在实验性的 Spring for Apache Pulsar 中,我们基于 Spring for Apache Kafka 中的基本设计原则来设计模型。如果您熟悉 Spring for Apache Kafka 的 API,您可能会注意到 Spring for Apache Pulsar 中的许多相似之处。考虑到这一点,以下是 Spring for Apache Pulsar 的一些当前主题和功能

  • PulsarTemplate 用于使用单行发送方法快速发布到 Pulsar 主题。
  • 提供PulsarListener 注解来编写高级 Pulsar 消费者。
  • MessageListenerContainer 基础架构以支持 PulsarListener。
  • 基于记录和批处理的PulsarListener 消费。
  • Pulsar 生产者和消费者工厂
  • 框架自动确认消息。
  • 各种确认模式(例如,**手动**、**记录**、**批处理**等)。
  • Spring Boot 自动配置组件。

此功能列表绝非详尽无遗,但我们希望此列表是一个良好的起点。

由于我们仍处于这项计划的初期阶段,我们非常感谢任何反馈。特别是如果您是编写基于 Apache Pulsar 的应用程序的 Spring 用户,我们非常乐意听取您使用此库的经验。

我们计划很快在此框架中添加更多功能和特性。我们欢迎社区以错误报告、功能请求、拉取请求和其他类型的反馈形式进行任何合作。

Spring for Apache Pulsar 资源

Spring for Apache Pulsar GitHub 仓库

参考文档

示例应用程序

获取 Spring 新闻通讯

保持与 Spring 新闻通讯联系

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部