The Consumer and Reader now share the IReceive interface for receiving a single message: ValueTask<Message> Receive(CancellationToken cancellationToken)
The Consumer and Reader now share the ISeek interface for seeking on message-id and publish time
The Consumer and Reader now share the IGetLastMessageId interface for getting the last message-id on a topic
The Consumer, Reader, and Producer now share the IState interface adding 'OnStateChangeFrom' and 'OnStateChangeTo'
The PulsarClient, Consumer, Reader, and Producer now have the read-only property 'ServiceUrl'
The Consumer now have the read-only property 'SubscriptionName'
All message compression types are now supported (listed below). Please read this compression how-to
Before the Consumer and Reader would throw an ArgumentOutOfRangeException if they encountered a compressed message. Now they will throw a CompressionException if the compression type is not supported
DotPulsarEventSource (performance counters) was only enabled for .NET Standard 2.1. Now it's enabled for all target frameworks except .NET Standard 2.0