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]