脉冲星 11 月脉动 | Apache Pulsar 2.4.2 版本即将发布,上海站 Meetup 圆满结束_github

> PIP-49:梳理 Pulsar Admin API 的权限机制

用户可以通过 Pulsar Admin API 管理 Pulsar 实例中的所有重要实体,例如 tenants,topics 和 namespace 等。当前的 Pulsar Admin API 中存在一些要求不当的操作权限问题,因此 PIP-49 审查了所有 admin 命令,并提出操作权限的具体修订方式。


https://github.com/apache/pulsar/wiki/PIP-49%3A-Permission-levels-and-inheritance

 

> PIP-43:Producer 生产不同 Schema 的消息

当前,Producer 只能发送一种 Schema 的消息,这个 Schema 可在创建 producer 时指定,也可以通过指定 AUTO_PRODUCE_BYTES 由 producer 从 broker 主动获取。然而一个 topic 的 schema 可在 producer 启动后改变,从而导致 producer 发送消息失败。同时,在从 Kafka 向 Pulsar 复制消息的场景下,一个 producer 可能需要从一个 Kafka partition 复制多种 Schema 数据到一个 Pulsar partition 中,以保障消息的顺序。

 

PIP-43 提出了创建新 message 的接口,允许在创建 message 时指定 Schema。

TypedMessageBuilder<T> newMessage(Schema<T> schema);

 

https://github.com/apache/pulsar/wiki/PIP-43%3A-producer-send-message-with-different-schema

 

> PIP-34:Key_shared 订阅模式下的 sticky consumer

Key_shared 订阅模式下的 sticky consumer 允许 consumer 在创建时指定其消费的 Key range,从而保障属于 Key range 的所有消息被同一个 consumer 消费。PIP-34 实现后,Pulsar 可以提升 flink-pulsar-connector / spark-pulsar-connector 的数据源并行度,同时保持消费的 Exaclty-once 语义。

 

https://github.com/apache/pulsar/wiki/PIP-34%3A-Add-new-subscribe-type-Key_shared

 

> PIP-38:Java 客户端支持批量 Message 接收

很多场景下,在消息的实际消费过程中,批量接收消息可以简化应用的使用,提升应用的吞吐率。PIP-38 支持用户用如下方式批量接收消息:

Messages messages = consumer.batchReceive();
// execute user's batch operation
consumer.acknowledge(messages);

并以如下方式设置批量接收的策略:

Consumer<String> consumer = pulsarClient.newConsumer(Schema.STRING)
                .topic(topic)
                .subscriptionName("s1")
                .batchReceivePolicy(BatchReceivePolicy.builder()
                        .maxNumberOfMessages(10)
                        .build())
                .subscribe();


https://github.com/apache/pulsar/wiki/PIP-38%3A-Batch-Receiving-Messages

>> Pulsar 2.5.0 版本发布讨论

距离 Pulsar 2.4.0 版本的发布已经过去 5 个月,很多功能特性加入了 2.5.0 版本中,因此郭斯杰提议加快 2.5.0 版本的发布进展。

 

>> MongoDB 的 CDC connector

在 PR-5590 中,实现了在 pular-io-debezium 组件中加入 MongoDB 模块。

 

>> Java 客户端引入`batchingMaxBytes` 的 producer 设置

不同应用程序之间的消息大小可能不同。使用大量消息来估计用于批处理的资源会导致不可预测性。

在PR-5045中,引入了一个新的设置 `batchingMaxBytes`,允许应用程序以更好的方式规划批处理的资源使用。


https://github.com/apache/pulsar/pull/5045

>> C++ / Python 客户端支持 seek-by-time

https://github.com/apache/pulsar/pull/5542