- [feature][Java] Support Reader Interceptor #14729
- [improve][Java] Refactor SchemaHash to reduce call of hashFunction in SchemaHash #17948
- [improve][Java] Improve performance of multi-topic consumer with more than one IO thread #16336
- [improve][Java] Add initialization for the OpSendMsg #16256
- [improve][Java] Replace ScheduledExecutor to improve performance of message consumption #16236
- [improve][Java] Send CloseConsumer on client timeout #16616
- [improve][Java] Make DeadLetterPolicy deserializable #16513
- [improve][Java] Switch to rely on Netty for Hostname Verification #15824
- [improve][Java] Remove sensitive msg from consumer/producer stats log #15483
- [improve][Java] Add pending messages information while printing the producer stats #15440
- [improve][Java] Check consumer schema null in advance #15327
- [improve][Java] Returns immutable data set when using TableView #14833
- [improve][Java] Avoid timer task run before previous subscribe complete #14818
- [improve][Java] Optimize pause when creating sub consumers in multi-topic consumer #14566
- [cleanup][Java] Reduce code duplication in admin client #16377
- [cleanup][Java] Remove redundant check for chunked message TotalChunkMsgSize in ConsumerImpl #16797
- [fix][Java] Fixed ack failure in ReaderImpl due to null messageId #17728
- [fix][Java] Unwrap completion exception for Lookup Services #17717
- [fix][Java] Fix scheduledExecutorProvider not shutdown #17527
- [fix][Java] Fix the message present in incoming queue after going to DLQ #17326
- [fix][Java] Fix reach redeliverCount client can't send batch messags #17317
- [fix][Java] Fix reach redeliverCount client can't send messages to DLQ #17287
- [fix][Java] LastBatchSendNanoTime initialization #17058
- [fix][Java] Fixed inactive cnx channel causing the request to fail to time out and fail to return #17051
- [fix][Java] Release semaphore before discarding messages in batchMessageContainer #17019
- [fix][Java] Fix client memory limit currentUsage leak and semaphore release duplicated in ProducerImpl #16837
- [fix][Java] Release memory usage for invalid messages #16835
- [fix][Java] Fix subscription topic name error #16719
- [fix][Java] Add message key if exists to deadLetter messages #16615
- [fix][Java] Fix large messages sometimes cannot be split into chunks #16196
- [fix][Java] Only trigger the batch receive timeout when having pending batch receives requests #16160
- [fix][Java] Fix the startMessageId can't be respected as the ChunkMessageID #16154
- [fix][Java] Fix auto cluster failover can't resolve host bug #16152
- [fix][Java] Prevent the trigger from running concurrently in the memory limit controller #15737
- [fix][Java] Fix messages sent by producers without schema cannot be decoded #15622
- [fix][Java] Fix flaky BatchMessageTest by initializing lastBatchSendNanoTime #15406
- [fix][Java] Fix inconsistent parameter of TopicPolicies.getSubscriptionDispatchRate #15293
- [fix][Java] Fix typo in ConsumerBuilder #15194
- [fix][Java] Fix performance regression with message listener #15162
- [fix][Java] ConsumerBuilderImpl can not set null to deadLetterPolicy #14980
- [fix][Java] Fix message publishing stuck when enabling batch #14870
- [fix][Java] Fix NPE of MultiTopicsConsumerImpl due to race condition #18287