Apache Pulsar v2.3.0 Release Notes
Release Date: 2019-02-21 // about 5 years ago-
General
- 👌 Support for schema definitions in the Pulsar Python client library
- 🔒 PIP-25: Token based authentication #2888, #3067 and #3089
- 🚀 Updated to Apache BookKeeper 4.9.0
- ZStandard compression codec #3159. Note that when a producer choose Zstd compression, a consumer will need to be at least at version 2.3.0
to be able to correctly receive the messages. - 👌 Support for Java 11 #3006
- ➕ Added
Schema.AUTO_PRODUCE
type to allow to publish serialized data and validate it against the
topic schema #2685 - ➕ Added
Schema.KeyValue
to allow for schema to be validated on message keys as well as payloads. #2885 - 👌 Support TLS authentication and authorization in standalone mode #3360
- 0️⃣ When creating namespace, use local cluster by default #3571
- 🏷 Tag BookKeeper ledgers created by Pulsar with topic/subscription names for info/debug purposes
#3525 - Enabled sticky reads in BooKeeper reads to increase IO efficiency with read-ahead #3569
- Several optimization in Pulsar SQL Presto connector (#3128, #3135, #3139, #3144, #3143)
- 🔧 Configure Pulsar broker data cache automatically from JVM settings #3573
- Reuse the SSL context objects #3550
- ⚡️ Automatic schema update can be disabled through admin interface #2691
- 👌 Support Dead-Letter-Queue from WebSocket proxy #2968
- Pull-mode for WebSocket proxy #3058
- Export Jetty stats to Prometheus #2804
- ➕ Added stats for Pulsar proxy #2740
- 👍 Allow subscribers to access subscription admin-api #2981
- 🚀 Make brokers read on closest Bookie in a multi-region deployment #3171
🛠 Fixes
- 🛠 Fixed deadlock in reusing ZookKeeper event thread #3591
- 🌲 In functions log topic appender, don't set producer name #3544
- ✅ When cursor recovery encounters empty cursor ledger, fallback to latest snapshot #3487
- 🛠 Fixed C++ regex-consumer when using HTTP service URL #3407
- 🛠 Fix race condition: broker not scheduling read for active consumer #3411
Pulsar IO
- ➕ Added Debezium connector for Change-Data-Capture into Pulsar #2791
- ➕ Added MongoDB connector #3561
- ➕ Added Elastic Search connector #2546
- ➕ Added HBase sink #3368
- ➕ Added Local files connector #2869
- Report source/sink stats in Prometheus #3261
- 👍 Allow filtering in Twitter Firehose connector #3298
- Sources/Sinks can be launched using fat jars as well #3166
Pulsar Functions
- ➕ Added Kubernetes runtime #1950
- Secrets interface #2826
- Cleanup subscriptions when deleting functions #3299
- ➕ Add Windowfunction interface to functions api #3324
- 👌 Support for accessing state in Python #2714
- 👌 Support submitting Python functions as wheel file
- 👌 Support submitting Python functions as Zip file with dependencies included #3321
- ➕ Add minimum amount of resources to run setting for functions #3536
- 🛠 Fixed the behavior of Function start/stop #3477
Java client
- 🚚 Moved Pulsar v1 client API into separate artifact #3228.
🚀 Applications that are using the Pulsar v1 API, deprecated since 2.0 release, need to update the Maven dependency to use the
pulsar-client-1x
artifact instead ofpulsar-client
. Eg.\<dependency\> \<groupId\>org.apache.pulsar\</groupId\> \<artifactId\>pulsar-client-1x\</artifactId\> \<version\>2.3.0\</version\> \</dependency\>
- 🛠 Fixed shading issues with Javadoc bundled in client jars by separating the API in a different Maven module #3309
- 👌 Improve Javadocs #3592
- 👌 Support specifying multiple hosts in pulsar service url and web url #3249
- Automatically discover when partitions on a topic are increased #3513
- ➕ Added
Client.getPartitionsForTopic()
#2972 (Javadoc) - ➕ Added
Consumer.pauseMessageListener()
andConsumer.resumeMessageListener()
#2961 - ✂ Removed shading relocations for Circe-checksum and lz4 libraries, to ensure native libraries
are correctly loaded when using shaded client lib. #2191
Python client
- 🛠 Fixed
Message.properties()
#3595
Go client
- ➕ Added
Producer.flush()
to flush all outstanding messages #3469 - 👌 Support
Consumer.Seek()
#3478 - ➕ Added
Message.Topic()
#3346 - 👍 Allow to specify
SubscriptionInitPos
option inConsumerOptions
#3588 - ➕ Added TLS hostname verification #3580
- 👍 Allow to link statically against
libpulsar.a
#3488 - 🔦 Expose
Producer.LastSequenceID()
andMessage.SequenceID()
#3416
C++ client
- 0️⃣ Enable batching by default when using
sendAsync()
#2949 - 👍 Allow to specify schema info in Avro format #3354
- ➕ Added
Producer.flush()
to flush all outstanding messages #3020 - ➕ Added TLS hostname verification #2475
- 👍 Allow to specify
SubscriptionInitialPosition
#3567 - ➕ Added
Message.getTopicName()
#3326 - ➕ Added
Cosnsumer.receiveAsync()
#3389 - 🏗 Build
libpulsar.a
with all required dependencies #3488 - ✂ Removed Boost from Pulsar API headers #3374
Adaptors
- 👍 Kafka client wrapper, added support for explicit partitioning and custom partitioner #3462
- 👌 Support config
auto.offset.reset
to Pulsar KafkaConsumer #3273 - 👍 In Apache Flink connector, added support for Batch Sink API (2979#, #3039 and #3046)
- ➕ Added Java batch examples for Flink adaptor
- ➕ Added Java streaming examples for Flink adaptor
- ➕ Added Scala examples for Flink adaptor
👀 For a complete list of issues fixed, see
https://github.com/apache/pulsar/milestone/18?closed=1
Downloads at https://pulsar.apache.org/download