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

chibenwa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new d38a23184a JAMES-4200 ActiveMQ: add a configuration option for 
adjusting usage l… (#2999)
d38a23184a is described below

commit d38a23184a6b1dceec37db5fdfe234852eacadcb
Author: Rene Cordier <[email protected]>
AuthorDate: Thu Apr 23 12:29:12 2026 +0700

    JAMES-4200 ActiveMQ: add a configuration option for adjusting usage l… 
(#2999)
---
 .../apache/james/queue/activemq/ActiveMQConfiguration.java | 14 ++++++++++++--
 .../org/apache/james/queue/activemq/EmbeddedActiveMQ.java  |  8 ++++----
 .../resources/META-INF/spring/activemq-queue-context.xml   |  3 +++
 src/site/xdoc/server/config-activemq.xml                   | 10 ++++++++++
 4 files changed, 29 insertions(+), 6 deletions(-)

diff --git 
a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQConfiguration.java
 
b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQConfiguration.java
index 0f1734e4cf..b0b5d4b75f 100644
--- 
a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQConfiguration.java
+++ 
b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQConfiguration.java
@@ -23,22 +23,32 @@ import org.apache.commons.configuration2.Configuration;
 import org.apache.james.queue.activemq.metric.ActiveMQMetricConfiguration;
 
 public class ActiveMQConfiguration {
+    private static final String ADJUST_USAGE_LIMITS = "adjust.usage.limits";
+    private static final boolean ADJUST_USAGE_LIMITS_DEFAULT = false;
 
     private final ActiveMQMetricConfiguration metricConfiguration;
+    private final boolean adjustUsageLimits;
 
     public static ActiveMQConfiguration getDefault() {
         return from(new BaseConfiguration());
     }
 
     public static ActiveMQConfiguration from(Configuration configuration) {
-        return new 
ActiveMQConfiguration(ActiveMQMetricConfiguration.from(configuration));
+        return new ActiveMQConfiguration(
+            ActiveMQMetricConfiguration.from(configuration),
+            configuration.getBoolean(ADJUST_USAGE_LIMITS, 
ADJUST_USAGE_LIMITS_DEFAULT));
     }
 
-    private ActiveMQConfiguration(ActiveMQMetricConfiguration 
metricConfiguration) {
+    private ActiveMQConfiguration(ActiveMQMetricConfiguration 
metricConfiguration, boolean adjustUsageLimits) {
         this.metricConfiguration = metricConfiguration;
+        this.adjustUsageLimits = adjustUsageLimits;
     }
 
     public ActiveMQMetricConfiguration getMetricConfiguration() {
         return metricConfiguration;
     }
+
+    public boolean isAdjustUsageLimits() {
+        return adjustUsageLimits;
+    }
 }
diff --git 
a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/EmbeddedActiveMQ.java
 
b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/EmbeddedActiveMQ.java
index 1871b05e66..a65cc61409 100644
--- 
a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/EmbeddedActiveMQ.java
+++ 
b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/EmbeddedActiveMQ.java
@@ -52,11 +52,11 @@ public class EmbeddedActiveMQ {
     private BrokerService brokerService;
 
     @Inject
-    private EmbeddedActiveMQ(FileSystem fileSystem, PersistenceAdapter 
persistenceAdapter) {
+    private EmbeddedActiveMQ(FileSystem fileSystem, PersistenceAdapter 
persistenceAdapter, ActiveMQConfiguration configuration) {
         this.persistenceAdapter = persistenceAdapter;
         try {
             
persistenceAdapter.setDirectory(fileSystem.getFile(KAHADB_STORE_LOCATION));
-            launchEmbeddedBroker(fileSystem);
+            launchEmbeddedBroker(fileSystem, configuration);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -96,7 +96,7 @@ public class EmbeddedActiveMQ {
         return blobTransferPolicy;
     }
 
-    private void launchEmbeddedBroker(FileSystem fileSystem) throws Exception {
+    private void launchEmbeddedBroker(FileSystem fileSystem, 
ActiveMQConfiguration configuration) throws Exception {
         brokerService = new BrokerService();
         brokerService.setBrokerName(BROKER_NAME);
         brokerService.setUseJmx(false);
@@ -104,7 +104,7 @@ public class EmbeddedActiveMQ {
         
brokerService.setDataDirectoryFile(fileSystem.getFile(BROCKERS_LOCATION));
         brokerService.setUseShutdownHook(false);
         brokerService.setSchedulerSupport(false);
-        brokerService.setAdjustUsageLimits(false);
+        
brokerService.setAdjustUsageLimits(configuration.isAdjustUsageLimits());
         long storeUsageLimitBytes = Long.getLong(STORE_USAGE_LIMIT_PROPERTY, 
DEFAULT_STORE_USAGE_LIMIT_BYTES);
         
brokerService.getSystemUsage().getStoreUsage().setLimit(storeUsageLimitBytes);
         brokerService.setBrokerId(BROKER_ID);
diff --git 
a/server/queue/queue-activemq/src/main/resources/META-INF/spring/activemq-queue-context.xml
 
b/server/queue/queue-activemq/src/main/resources/META-INF/spring/activemq-queue-context.xml
index f7406da0bd..d411786dce 100644
--- 
a/server/queue/queue-activemq/src/main/resources/META-INF/spring/activemq-queue-context.xml
+++ 
b/server/queue/queue-activemq/src/main/resources/META-INF/spring/activemq-queue-context.xml
@@ -34,9 +34,12 @@
     <bean id="embeddedActiveMQ" 
class="org.apache.james.queue.activemq.EmbeddedActiveMQ">
         <constructor-arg index="0" ref="filesystem"/>
         <constructor-arg index="1" ref="persistenceAdapter"/>
+        <constructor-arg index="2" ref="configuration"/>
     </bean>
 
     <bean id="persistenceAdapter" 
class="org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter"/>
 
     <bean id="activeMQMetricCollector" 
class="org.apache.james.queue.activemq.metric.ActiveMQMetricCollectorNoop"/>
+
+    <bean id="configuration" 
class="org.apache.james.queue.activemq.ActiveMQConfiguration" 
factory-method="getDefault"/>
 </beans>
diff --git a/src/site/xdoc/server/config-activemq.xml 
b/src/site/xdoc/server/config-activemq.xml
index dfa366bc56..e1d8b434ea 100644
--- a/src/site/xdoc/server/config-activemq.xml
+++ b/src/site/xdoc/server/config-activemq.xml
@@ -34,6 +34,16 @@
 
     </section>
 
+    <section name="ActiveMQ Configuration">
+      <p>
+        ActiveMQ offers some configuration options:
+      </p>
+      <dl>
+        <dt><strong>adjust.usage.limits</strong></dt>
+        <dd>Enable adjusting usage limits (defaults to false). You might want 
to turn it to true
+          for limiting memory usage for example.</dd>
+      </dl>
+    </section>
 
     <section name="ActiveMQ Metrics Configuration">
       <p>


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

Reply via email to