Description
While investigating some performance issues, we noticed that Artemis clients (including MDBs) use by default a "global" pool by creating a cached thread pool with 0 core pool size, Integer.MAX_VALUE max size and 60s keep alive.
This default global pool looks misconfigured. If a Artemis clients has a lot of activity it is actually possible that threads are deleted from the pool and added back.
Related to this, Artemis defines a threadPoolMaxSize attribute if the client is not using a global pool. But the property does not seem to be well name.
If the Artemis client is using a "non-global" pool, this property is used to create a newFixedThreadPool. So this property defines the actual size of the pool, not a max size.
As a comparison, the "global" scheduled thread is instantiating with a 5 core pool size.