Apache Pulsar 的实验性 Spring 支持介绍

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

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

Apache Pulsar 是一个流行的消息传递系统,在企业消息传递和流媒体领域拥有不断增长的开发者生态系统。 以下是使用 Apache Pulsar 进行基于消息传递的软件应用程序的一些主要特性和优点

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

从历史上看,Spring 为流行的基于 JVM 的消息传递系统提供了全面的支持。 JMS 支持是 Spring Framework 核心的一部分。 Spring 通过 Spring 生态系统中相关的对应组件(Spring AMQPSpring for Apache Kafka)为 AMQP 和 Kafka 提供了广泛的支持。 此外,流行的 Spring 项目(例如 Spring IntegrationSpring Cloud Stream)中提供了各种与消息传递相关的支持。 由于 Apache Pulsar 作为消息代理正在增长,因此我们开始尝试一个新的 Spring 项目,专门使用 Java 客户端 for Apache Pulsar。

从应用程序开发人员的角度来看,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 Producer 和 Consumer 工厂
  • 框架自动进行消息确认。
  • 各种确认模式(例如,MANUALRECORDBATCH 等)。
  • Spring Boot 自动配置组件。

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

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

我们计划很快向该框架添加更多功能和特性。 我们欢迎来自社区的任何形式的错误报告、功能请求、Pull Request 和其他类型的反馈。

Spring for Apache Pulsar 资源

Spring for Apache Pulsar GitHub 仓库

参考文档

示例应用程序

获取 Spring 新闻通讯

保持与 Spring 新闻通讯的联系

订阅

抢占先机

VMware 提供培训和认证来加速您的进步。

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部