You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 1, 2024. It is now read-only.
The Pulsar client mainly has three thread pools that cooperate with each other to complete the message publishing and consumption of messages.
IO threads - Used for handling network packets from the broker
Internal threads - Used for handling internal tasks such as moving the received messages to the internal receiver queue and pulling out the message from the receiver queue to return to users. And the Java client is optimized by the lock-free principle; each consumer will use a pinned internal thread to reduce the lock overhead.
External threads - Used by the message listener
All the above thread pools will be created automatically after a Pulsar client instance has been created.
But for some cases, users need to create multiple Pulsar client instances in a JVM process due to different authentications or others. Each client will have exclusive thread pools, which will cause unreasonable thread usage, waste memory, and potential performance degradation.
It is not a serious problem for previous releases with the default configurations because the thread pool will only have 1 thread by default. But it also doesn't make sense that we only have one thread for each thread pool. We have discussed this part under this thread
So this proposal will provide a new possibility for users that require multiple Pulsar client instances in one JVM process to use the shared thread pools across multiple Pulsar client instances.
Goal
Provide public API to use the shared thread pool across multiple Pulsar client instances in one JVM process
IO threads
Internal threads
External threads
BTW, we already have such an ability internally. It was just hidden for users. Please take a look at apache#12037 and apache#13839 to get more details.
API Changes
The following APIs will be introduced to the Java Client when creating a Client instance
Original Issue: apache#19074
Motivation
The Pulsar client mainly has three thread pools that cooperate with each other to complete the message publishing and consumption of messages.
All the above thread pools will be created automatically after a Pulsar client instance has been created.
But for some cases, users need to create multiple Pulsar client instances in a JVM process due to different authentications or others. Each client will have exclusive thread pools, which will cause unreasonable thread usage, waste memory, and potential performance degradation.
It is not a serious problem for previous releases with the default configurations because the thread pool will only have 1 thread by default. But it also doesn't make sense that we only have one thread for each thread pool. We have discussed this part under this thread
So this proposal will provide a new possibility for users that require multiple Pulsar client instances in one JVM process to use the shared thread pools across multiple Pulsar client instances.
Goal
Provide public API to use the shared thread pool across multiple Pulsar client instances in one JVM process
BTW, we already have such an ability internally. It was just hidden for users. Please take a look at apache#12037 and apache#13839 to get more details.
API Changes
The following APIs will be introduced to the Java Client when creating a Client instance
The text was updated successfully, but these errors were encountered: