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