This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 6761c82f71 ARTEMIS-5832 clarify docs for client thread pooling
6761c82f71 is described below

commit 6761c82f7159125b6da140fd76777aeab053efae
Author: Justin Bertram <[email protected]>
AuthorDate: Wed Oct 15 09:12:02 2025 -0500

    ARTEMIS-5832 clarify docs for client thread pooling
---
 .../core/client/impl/ServerLocatorImpl.java        |  2 +-
 docs/user-manual/thread-pooling.adoc               | 65 +++++++++++++++++++---
 2 files changed, 59 insertions(+), 8 deletions(-)

diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java
index 91f96db155..4019afaff2 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java
@@ -219,7 +219,7 @@ public final class ServerLocatorImpl implements 
ServerLocatorInternal, Discovery
             flowControlThreadPool = new ActiveMQThreadPoolExecutor(0, 
config.flowControlThreadPoolMaxSize, 60L, TimeUnit.SECONDS, factory);
          }
 
-         factory = getThreadFactory("client-factory-pinger-");
+         factory = getThreadFactory("client-factory-scheduled-");
          scheduledThreadPool = 
Executors.newScheduledThreadPool(config.scheduledThreadPoolMaxSize, factory);
       }
       this.updateArrayActor = new Actor<>(threadPool, 
this::internalUpdateArray);
diff --git a/docs/user-manual/thread-pooling.adoc 
b/docs/user-manual/thread-pooling.adoc
index 1f192a6061..8ed10af2f4 100644
--- a/docs/user-manual/thread-pooling.adoc
+++ b/docs/user-manual/thread-pooling.adoc
@@ -110,17 +110,68 @@ in-vm connectivity and invoking failure listeners for 
Netty
 `Log4j2-TF-\*-Scheduled-*`::
 executes Log4j2 tasks related to `CronTriggeringPolicy` used by default 
`log4j2.properties`
 
-
 == Client-Side Thread Management
 
-On the client side, the Core client maintains a single, "global" static 
scheduled thread pool and a single, "global" static general thread pool for use 
by all clients using the same classloader in that JVM instance.
+On the Core client thread pools exist for each of the following:
 
-The static scheduled thread pool has a maximum size of `5` threads by default.
-This can be changed using the `scheduledThreadPoolMaxSize` URI parameter.
+* scheduled tasks
+* general use
+* flow control
+* remoting (managed by Netty on a per-connector basis)
 
-The general purpose thread pool has an unbounded maximum size.
-This is changed using the `threadPoolMaxSize` URL parameter.
+These are used by all clients using the same classloader in a JVM.
 
-If required the Core client can also be configured so that each 
`ClientSessionFactory` instance does not use these "global" static pools but 
instead maintains its own scheduled and general purpose pool.
+If required each `ClientSessionFactory` instance can be configured so that it 
does not use these global static pools but instead maintains individual pools.
 Any sessions created from that `ClientSessionFactory` will use those pools 
instead.
 This is configured using the `useGlobalPools` boolean URL parameter.
+The default is `true`.
+
+=== Scheduled Thread Pool
+
+The scheduled thread pool is used for activities that require running 
periodically or with delays.
+This includes tasks like:
+
+* sending `PING` packets to the broker
+* flushing network data to the wire if `batchDelay` > `0`
+
+The maximum number of threads used by this pool can be configured using the 
`scheduledThreadPoolMaxSize` URI parameter, e.g.:
+
+----
+tcp://host:61616?scheduledThreadPoolMaxSize=10
+----
+
+The Java system property 
`activemq.artemis.client.global.scheduled.thread.pool.core.size` can also be 
used.
+
+The default `scheduledThreadPoolMaxSize` is `5`.
+A value of `0` is not allowed.
+
+If using a global pool the name for threads will contain 
`activemq-client-global-scheduled`.
+If using a non-global pool the name for threads will contain 
`activemq-client-factory-scheduled`.
+
+=== General Purpose Thread Pool
+
+This general purpose thread pool is used for most asynchronous actions.
+The maximum number of threads used by this pool is configured using the 
`threadPoolMaxSize` URI parameter, e.g.:
+
+----
+tcp://host:61616?threadPoolMaxSize=10
+----
+
+By default, a global pool will be used and the default `threadPoolMaxSize` 
will be `Runtime.getRuntime().availableProcessors()` * 8.
+If using a non-global pool the default `threadPoolMaxSize` is `-1`.
+A value of `-1` signifies that the thread pool has _no upper bound_ and new 
threads will be created on demand if there are not enough threads already 
available to satisfy demand.
+A value of `0` is not allowed.
+The minimum valid value is `2`.
+
+Any threads in this pool which are idle for `60` seconds will be terminated.
+
+The name for threads from this pool will contain `activemq-client-factory`.
+
+=== Netty Connectors
+
+Netty threads for processing network traffic, by default, are capped on a 
per-connector basis at three times the number of cores (or hyper-threads) as 
reported by `Runtime.getRuntime().availableProcessors()`.
+To override this value, you can set the number of threads by specifying the 
URI parameter `remotingThreads`.
+See the xref:configuring-transports.adoc#configuring-the-transport[configuring 
transports] for more information on this.
+
+Threads names will include the name of their corresponding acceptor with the 
prefix `activemq-remoting-`.
+For example, for the acceptor named `amqp` the corresponding thread names will 
contain `activemq-remoting-amqp-<brokerName>`.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to