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

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


The following commit(s) were added to refs/heads/main by this push:
     new 582a689cdb ARTEMIS-4186 Ability to set compressionLevel for 
compressLargeMessages
582a689cdb is described below

commit 582a689cdba77978e55dd1cc41e64f4e9bc1b167
Author: a181321 <anton.roskv...@volvo.com>
AuthorDate: Tue Feb 28 18:39:44 2023 +0100

    ARTEMIS-4186 Ability to set compressionLevel for compressLargeMessages
---
 .../artemis/api/config/ServerLocatorConfig.java    |  2 +
 .../artemis/api/core/client/ActiveMQClient.java    |  2 +
 .../artemis/api/core/client/ServerLocator.java     | 16 +++++
 .../core/client/impl/ClientProducerImpl.java       |  1 +
 .../core/client/impl/ClientSessionFactoryImpl.java |  2 +-
 .../core/client/impl/ClientSessionImpl.java        | 10 ++++
 .../core/client/impl/ClientSessionInternal.java    |  2 +
 .../core/client/impl/ServerLocatorImpl.java        | 11 ++++
 .../activemq/artemis/utils/DeflaterReader.java     |  4 ++
 .../jms/client/ActiveMQConnectionFactory.java      |  8 +++
 .../artemis/jms/server/JMSServerManager.java       |  2 +
 .../config/ConnectionFactoryConfiguration.java     |  4 ++
 .../impl/ConnectionFactoryConfigurationImpl.java   | 22 ++++++-
 .../jms/server/impl/JMSServerManagerImpl.java      |  5 +-
 .../ra/ActiveMQRAManagedConnectionFactory.java     |  8 +++
 .../artemis/ra/ActiveMQResourceAdapter.java        | 27 +++++++++
 .../artemis/ra/ConnectionFactoryProperties.java    | 11 ++++
 docs/user-manual/en/large-messages.md              |  9 +++
 .../client/LargeMessageCompressTest.java           | 70 ++++++++++++++++++++++
 .../integration/jms/client/PreACKJMSTest.java      |  2 +-
 .../integration/jms/client/ReSendMessageTest.java  |  2 +-
 ...ssionClosedOnRemotingConnectionFailureTest.java |  2 +-
 .../integration/jms/client/TextMessageTest.java    |  2 +-
 .../jms/connection/InvalidConnectorTest.java       |  2 +-
 .../jms/divert/DivertAndACKClientTest.java         |  2 +-
 .../jms/tests/tools/container/LocalTestServer.java |  2 +-
 .../unit/ra/ActiveMQResourceAdapterConfigTest.java |  6 ++
 27 files changed, 226 insertions(+), 10 deletions(-)

diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ServerLocatorConfig.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ServerLocatorConfig.java
index 201ec8dd01..7196c5a39b 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ServerLocatorConfig.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ServerLocatorConfig.java
@@ -47,6 +47,7 @@ public class ServerLocatorConfig {
    public int failoverAttempts = ActiveMQClient.DEFAULT_FAILOVER_ATTEMPTS;
    public int initialMessagePacketSize = 
ActiveMQClient.DEFAULT_INITIAL_MESSAGE_PACKET_SIZE;
    public boolean cacheLargeMessagesClient = 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT;
+   public int compressionLevel = ActiveMQClient.DEFAULT_COMPRESSION_LEVEL;
    public boolean compressLargeMessage = 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES;
    public boolean useTopologyForLoadBalancing = 
ActiveMQClient.DEFAULT_USE_TOPOLOGY_FOR_LOADBALANCING;
 
@@ -84,5 +85,6 @@ public class ServerLocatorConfig {
       failoverAttempts = locator.failoverAttempts;
       initialMessagePacketSize = locator.initialMessagePacketSize;
       useTopologyForLoadBalancing = locator.useTopologyForLoadBalancing;
+      compressionLevel = locator.compressionLevel;
    }
 }
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ActiveMQClient.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ActiveMQClient.java
index f4134efbe1..0b911a2665 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ActiveMQClient.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ActiveMQClient.java
@@ -69,6 +69,8 @@ public final class ActiveMQClient {
 
    public static final boolean DEFAULT_COMPRESS_LARGE_MESSAGES = false;
 
+   public static final int DEFAULT_COMPRESSION_LEVEL = -1;
+
    public static final int DEFAULT_CONSUMER_WINDOW_SIZE = 1024 * 1024;
 
    public static final int DEFAULT_CONSUMER_MAX_RATE = -1;
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ServerLocator.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ServerLocator.java
index 2602d3f767..b7e6083f45 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ServerLocator.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ServerLocator.java
@@ -809,6 +809,22 @@ public interface ServerLocator extends AutoCloseable {
     */
    ServerLocator setCompressLargeMessage(boolean compressLargeMessages);
 
+   /**
+    * What compression level is in use
+    *
+    * @return
+    */
+   int getCompressionLevel();
+
+   /**
+    * Sets what compressionLevel to use when compressing messages
+    * Value must be -1 (default), or 0-9
+    *
+    * @param compressionLevel
+    * @return this ServerLocator
+    */
+   ServerLocator setCompressionLevel(int compressionLevel);
+
    // XXX No javadocs
    ServerLocator addClusterTopologyListener(ClusterTopologyListener listener);
 
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
index f3fd2e1f69..f3b01a7eca 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
@@ -441,6 +441,7 @@ public class ClientProducerImpl implements 
ClientProducerInternal {
       if (session.isCompressLargeMessages()) {
          msgI.putBooleanProperty(Message.HDR_LARGE_COMPRESSED, true);
          deflaterReader = new DeflaterReader(inputStreamParameter, 
messageSize);
+         deflaterReader.setLevel(session.getCompressionLevel());
          input = deflaterReader;
       }
 
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
index 6f2fc28053..86d0b9465d 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
@@ -836,7 +836,7 @@ public class ClientSessionFactoryImpl implements 
ClientSessionFactoryInternal, C
 
       SessionContext context = createSessionChannel(name, username, password, 
xa, autoCommitSends, autoCommitAcks, preAcknowledge, clientID);
 
-      ClientSessionInternal session = new ClientSessionImpl(this, name, 
username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge, 
serverLocator.isBlockOnAcknowledge(), serverLocator.isAutoGroup(), 
ackBatchSize, serverLocator.getConsumerWindowSize(), 
serverLocator.getConsumerMaxRate(), serverLocator.getConfirmationWindowSize(), 
serverLocator.getProducerWindowSize(), serverLocator.getProducerMaxRate(), 
serverLocator.isBlockOnNonDurableSend(), serverLocator.isBlockOnDurableSe [...]
+      ClientSessionInternal session = new ClientSessionImpl(this, name, 
username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge, 
serverLocator.isBlockOnAcknowledge(), serverLocator.isAutoGroup(), 
ackBatchSize, serverLocator.getConsumerWindowSize(), 
serverLocator.getConsumerMaxRate(), serverLocator.getConfirmationWindowSize(), 
serverLocator.getProducerWindowSize(), serverLocator.getProducerMaxRate(), 
serverLocator.isBlockOnNonDurableSend(), serverLocator.isBlockOnDurableSe [...]
 
       synchronized (sessions) {
          if (closed || !clientProtocolManager.isAlive()) {
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
index e388673645..54a2b86cbb 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
@@ -123,6 +123,8 @@ public final class ClientSessionImpl implements 
ClientSessionInternal, FailureLi
 
    private final boolean compressLargeMessages;
 
+   private final int compressionLevel;
+
    private volatile int initialMessagePacketSize;
 
    private final boolean cacheLargeMessageClient;
@@ -184,6 +186,7 @@ public final class ClientSessionImpl implements 
ClientSessionInternal, FailureLi
                      final boolean cacheLargeMessageClient,
                      final int minLargeMessageSize,
                      final boolean compressLargeMessages,
+                     final int compressionLevel,
                      final int initialMessagePacketSize,
                      final String groupID,
                      final SessionContext sessionContext,
@@ -237,6 +240,8 @@ public final class ClientSessionImpl implements 
ClientSessionInternal, FailureLi
 
       this.compressLargeMessages = compressLargeMessages;
 
+      this.compressionLevel = compressionLevel;
+
       this.initialMessagePacketSize = initialMessagePacketSize;
 
       this.groupID = groupID;
@@ -1186,6 +1191,11 @@ public final class ClientSessionImpl implements 
ClientSessionInternal, FailureLi
       return compressLargeMessages;
    }
 
+   @Override
+   public int getCompressionLevel() {
+      return compressionLevel;
+   }
+
    /**
     * @return the cacheLargeMessageClient
     */
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionInternal.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionInternal.java
index b2833a2344..0c13fbdba6 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionInternal.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionInternal.java
@@ -41,6 +41,8 @@ public interface ClientSessionInternal extends ClientSession {
 
    boolean isCompressLargeMessages();
 
+   int getCompressionLevel();
+
    void expire(ClientConsumer consumer, Message message) throws 
ActiveMQException;
 
    void addConsumer(ClientConsumerInternal consumer);
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 3fab8940fd..af7b304c86 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
@@ -1292,6 +1292,17 @@ public final class ServerLocatorImpl implements 
ServerLocatorInternal, Discovery
       return this;
    }
 
+   @Override
+   public int getCompressionLevel() {
+      return config.compressionLevel;
+   }
+
+   @Override
+   public ServerLocatorImpl setCompressionLevel(int compressionLevel) {
+      this.config.compressionLevel = compressionLevel;
+      return this;
+   }
+
    private void checkWrite() {
       synchronized (stateGuard) {
          if (state != null && state != STATE.CLOSED) {
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/DeflaterReader.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/DeflaterReader.java
index 4443687bde..91f0a0b7f6 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/DeflaterReader.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/DeflaterReader.java
@@ -117,4 +117,8 @@ public class DeflaterReader extends InputStream {
       return bytesRead.get();
    }
 
+   public void setLevel(int level) {
+      deflater.setLevel(level);
+   }
+
 }
diff --git 
a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java
 
b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java
index 9c53e34311..c0e78c8123 100644
--- 
a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java
+++ 
b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java
@@ -854,6 +854,14 @@ public class ActiveMQConnectionFactory extends 
JNDIStorable implements Connectio
       serverLocator.setCompressLargeMessage(avoidLargeMessages);
    }
 
+   public int getCompressionLevel() {
+      return serverLocator.getCompressionLevel();
+   }
+
+   public void setCompressionLevel(int compressionLevel) {
+      serverLocator.setCompressionLevel(compressionLevel);
+   }
+
    @Override
    public void close() {
       ServerLocator locator0 = serverLocator;
diff --git 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/JMSServerManager.java
 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/JMSServerManager.java
index c89c392d28..e1b22f0b8d 100644
--- 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/JMSServerManager.java
+++ 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/JMSServerManager.java
@@ -246,6 +246,7 @@ public interface JMSServerManager extends ActiveMQComponent 
{
                                 boolean cacheLargeMessagesClient,
                                 int minLargeMessageSize,
                                 boolean compressLargeMessage,
+                                int compressionLevel,
                                 int consumerWindowSize,
                                 int consumerMaxRate,
                                 int confirmationWindowSize,
@@ -282,6 +283,7 @@ public interface JMSServerManager extends ActiveMQComponent 
{
                                 boolean cacheLargeMessagesClient,
                                 int minLargeMessageSize,
                                 boolean compressLargeMessages,
+                                int compressionLevel,
                                 int consumerWindowSize,
                                 int consumerMaxRate,
                                 int confirmationWindowSize,
diff --git 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
index c02631a722..463bda3dd8 100644
--- 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
+++ 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
@@ -82,6 +82,10 @@ public interface ConnectionFactoryConfiguration extends 
EncodingSupport {
 
    ConnectionFactoryConfiguration setCompressLargeMessages(boolean 
avoidLargeMessages);
 
+   int getCompressionLevel();
+
+   ConnectionFactoryConfiguration setCompressionLevel(int compressionLevel);
+
    int getConsumerWindowSize();
 
    ConnectionFactoryConfiguration setConsumerWindowSize(int 
consumerWindowSize);
diff --git 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
index e233fec440..a76a436015 100644
--- 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
+++ 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
@@ -67,6 +67,8 @@ public class ConnectionFactoryConfigurationImpl implements 
ConnectionFactoryConf
 
    private boolean compressLargeMessage = 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES;
 
+   private int compressionLevel = ActiveMQClient.DEFAULT_COMPRESSION_LEVEL;
+
    private int consumerWindowSize = 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE;
 
    private int consumerMaxRate = ActiveMQClient.DEFAULT_CONSUMER_MAX_RATE;
@@ -281,6 +283,17 @@ public class ConnectionFactoryConfigurationImpl implements 
ConnectionFactoryConf
       return this;
    }
 
+   @Override
+   public int getCompressionLevel() {
+      return compressionLevel;
+   }
+
+   @Override
+   public ConnectionFactoryConfiguration setCompressionLevel(final int 
compressionLevel) {
+      this.compressionLevel = compressionLevel;
+      return this;
+   }
+
    @Override
    public int getConsumerWindowSize() {
       return consumerWindowSize;
@@ -642,6 +655,9 @@ public class ConnectionFactoryConfigurationImpl implements 
ConnectionFactoryConf
       enableSharedClientID = buffer.readableBytes() > 0 ? 
BufferHelper.readNullableBoolean(buffer) : 
ActiveMQClient.DEFAULT_ENABLED_SHARED_CLIENT_ID;
 
       useTopologyForLoadBalancing = buffer.readableBytes() > 0 ? 
BufferHelper.readNullableBoolean(buffer) : 
ActiveMQClient.DEFAULT_USE_TOPOLOGY_FOR_LOADBALANCING;
+
+      compressionLevel = buffer.readableBytes() > 0 ? 
BufferHelper.readNullableInteger(buffer) : 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL;
+
    }
 
    @Override
@@ -738,6 +754,8 @@ public class ConnectionFactoryConfigurationImpl implements 
ConnectionFactoryConf
       BufferHelper.writeNullableBoolean(buffer, enableSharedClientID);
 
       BufferHelper.writeNullableBoolean(buffer, useTopologyForLoadBalancing);
+
+      BufferHelper.writeNullableInteger(buffer, compressionLevel);
    }
 
    @Override
@@ -858,7 +876,9 @@ public class ConnectionFactoryConfigurationImpl implements 
ConnectionFactoryConf
 
          BufferHelper.sizeOfNullableBoolean(enableSharedClientID) +
 
-         BufferHelper.sizeOfNullableBoolean(useTopologyForLoadBalancing);
+         BufferHelper.sizeOfNullableBoolean(useTopologyForLoadBalancing) +
+
+         BufferHelper.sizeOfNullableInteger(compressionLevel);
 
       return size;
    }
diff --git 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
index e256237f1a..76ff364c6d 100644
--- 
a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
+++ 
b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
@@ -872,6 +872,7 @@ public class JMSServerManagerImpl extends 
CleaningActivateCallback implements JM
                                                     final boolean 
cacheLargeMessagesClient,
                                                     final int 
minLargeMessageSize,
                                                     final boolean 
compressLargeMessage,
+                                                    final int compressionLevel,
                                                     final int 
consumerWindowSize,
                                                     final int consumerMaxRate,
                                                     final int 
confirmationWindowSize,
@@ -917,6 +918,7 @@ public class JMSServerManagerImpl extends 
CleaningActivateCallback implements JM
                                                     final boolean 
cacheLargeMessagesClient,
                                                     final int 
minLargeMessageSize,
                                                     final boolean 
compressLargeMessages,
+                                                    final int compressionLevel,
                                                     final int 
consumerWindowSize,
                                                     final int consumerMaxRate,
                                                     final int 
confirmationWindowSize,
@@ -943,7 +945,7 @@ public class JMSServerManagerImpl extends 
CleaningActivateCallback implements JM
       checkInitialised();
       ActiveMQConnectionFactory cf = connectionFactories.get(name);
       if (cf == null) {
-         ConnectionFactoryConfiguration configuration = new 
ConnectionFactoryConfigurationImpl().setName(name).setHA(ha).setBindings(registryBindings).setDiscoveryGroupName(discoveryGroupName).setFactoryType(cfType).setClientID(clientID).setClientFailureCheckPeriod(clientFailureCheckPeriod).setConnectionTTL(connectionTTL).setCallTimeout(callTimeout).setCallFailoverTimeout(callFailoverTimeout).setCacheLargeMessagesClient(cacheLargeMessagesClient).setMinLargeMessageSize(minLargeMessageSize
 [...]
+         ConnectionFactoryConfiguration configuration = new 
ConnectionFactoryConfigurationImpl().setName(name).setHA(ha).setBindings(registryBindings).setDiscoveryGroupName(discoveryGroupName).setFactoryType(cfType).setClientID(clientID).setClientFailureCheckPeriod(clientFailureCheckPeriod).setConnectionTTL(connectionTTL).setCallTimeout(callTimeout).setCallFailoverTimeout(callFailoverTimeout).setCacheLargeMessagesClient(cacheLargeMessagesClient).setMinLargeMessageSize(minLargeMessageSize
 [...]
          createConnectionFactory(true, configuration, registryBindings);
       }
    }
@@ -1212,6 +1214,7 @@ public class JMSServerManagerImpl extends 
CleaningActivateCallback implements JM
       cf.setReconnectAttempts(cfConfig.getReconnectAttempts());
       
cf.setFailoverOnInitialConnection(cfConfig.isFailoverOnInitialConnection());
       cf.setCompressLargeMessage(cfConfig.isCompressLargeMessages());
+      cf.setCompressionLevel(cfConfig.getCompressionLevel());
       cf.setGroupID(cfConfig.getGroupID());
       cf.setProtocolManagerFactoryStr(cfConfig.getProtocolManagerFactoryStr());
       cf.setDeserializationBlackList(cfConfig.getDeserializationBlackList());
diff --git 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAManagedConnectionFactory.java
 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAManagedConnectionFactory.java
index c88e69ffb0..a6afe259b8 100644
--- 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAManagedConnectionFactory.java
+++ 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAManagedConnectionFactory.java
@@ -689,6 +689,14 @@ public final class ActiveMQRAManagedConnectionFactory 
implements ManagedConnecti
       mcfProperties.setCompressLargeMessage(compressLargeMessage);
    }
 
+   public Integer getCompressionLevel() {
+      return mcfProperties.getCompressionLevel();
+   }
+
+   public void setCompressionLevel(final Integer compressionLevel) {
+      mcfProperties.setCompressionLevel(compressionLevel);
+   }
+
    public Integer getInitialConnectAttempts() {
       return mcfProperties.getInitialConnectAttempts();
    }
diff --git 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
index 9e6578a9d1..4a7982d384 100644
--- 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
+++ 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQResourceAdapter.java
@@ -640,6 +640,29 @@ public class ActiveMQResourceAdapter implements 
ResourceAdapter, Serializable {
       raProperties.setCompressLargeMessage(compressLargeMessage);
    }
 
+   /**
+    * Get compressionLevel
+    *
+    * @return The value
+    */
+   public Integer getCompressionLevel() {
+      logger.trace("getCompressionLevel()");
+
+      return raProperties.getCompressionLevel();
+   }
+
+   /**
+    * Sets what compressionLevel to use when compressing messages
+    * Value must be -1 (default) or 0-9
+    *
+    * @param compressionLevel The value
+    */
+   public void setCompressionLevel(final Integer compressionLevel) {
+      logger.trace("setCompressionLevel({})", compressionLevel);
+
+      raProperties.setCompressionLevel(compressionLevel);
+   }
+
    /**
     * Get call timeout
     *
@@ -1828,6 +1851,10 @@ public class ActiveMQResourceAdapter implements 
ResourceAdapter, Serializable {
       if (val2 != null) {
          cf.setInitialMessagePacketSize(val2);
       }
+      val2 = overrideProperties.getCompressionLevel() != null ? 
overrideProperties.getCompressionLevel() : raProperties.getCompressionLevel();
+      if (val2 != null) {
+         cf.setCompressionLevel(val2);
+      }
 
       Long val3 = overrideProperties.getClientFailureCheckPeriod() != null ? 
overrideProperties.getClientFailureCheckPeriod() : 
raProperties.getClientFailureCheckPeriod();
       if (val3 != null) {
diff --git 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ConnectionFactoryProperties.java
 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ConnectionFactoryProperties.java
index b370a34064..1967819c9c 100644
--- 
a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ConnectionFactoryProperties.java
+++ 
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ConnectionFactoryProperties.java
@@ -76,6 +76,8 @@ public class ConnectionFactoryProperties implements 
ConnectionFactoryOptions {
 
    private Boolean compressLargeMessage;
 
+   private Integer compressionLevel;
+
    private Integer consumerWindowSize;
 
    private Integer producerWindowSize;
@@ -178,6 +180,15 @@ public class ConnectionFactoryProperties implements 
ConnectionFactoryOptions {
       this.compressLargeMessage = compressLargeMessage;
    }
 
+   public Integer getCompressionLevel() {
+      return compressionLevel;
+   }
+
+   public void setCompressionLevel(Integer compressionLevel) {
+      hasBeenUpdated = true;
+      this.compressionLevel = compressionLevel;
+   }
+
    public String getConnectionLoadBalancingPolicyClassName() {
       logger.trace("getConnectionLoadBalancingPolicyClassName()");
 
diff --git a/docs/user-manual/en/large-messages.md 
b/docs/user-manual/en/large-messages.md
index 57068c4871..ca7476e6e1 100644
--- a/docs/user-manual/en/large-messages.md
+++ b/docs/user-manual/en/large-messages.md
@@ -68,11 +68,20 @@ is transferred to the server's side. Notice that there's no 
special treatment
 at the server's side, all the compressing and uncompressing is done at the
 client.
 
+This behavior can be tuned further by setting an optional parameter: 
`compressionLevel`.
+This will decide how much the message body should be compressed. 
`compressionLevel`
+accepts an integer of `-1` or a value between `0-9`. The default value is `-1` 
which
+corresponds to around level 6-7.
+
 If the compressed size of a large message is below `minLargeMessageSize`, it is
 sent to server as regular messages. This means that the message won't be
 written into the server's large-message data directory, thus reducing the disk
 I/O.
 
+**Note:** A higher `compressionLevel` means the message body will get further 
compressed,
+but this is at the cost of speed and computational overhead. Make sure to tune 
this value
+according to its specific use-case.
+
 ## Streaming large messages from Core Protocol
 
 Apache ActiveMQ Artemis supports setting the body of messages using input and
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
index edc83e3441..2d48f8639a 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
@@ -31,6 +31,7 @@ import java.util.zip.Deflater;
 import io.netty.util.internal.PlatformDependent;
 import org.apache.activemq.artemis.api.core.Message;
 import org.apache.activemq.artemis.api.core.QueueConfiguration;
+import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
 import org.apache.activemq.artemis.api.core.client.ClientConsumer;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
@@ -38,6 +39,8 @@ import 
org.apache.activemq.artemis.api.core.client.ClientProducer;
 import org.apache.activemq.artemis.api.core.client.ClientSession;
 import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
 import org.apache.activemq.artemis.api.core.client.ServerLocator;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
+import org.apache.activemq.artemis.api.core.management.ResourceNames;
 import org.apache.activemq.artemis.core.config.StoreConfiguration;
 import org.apache.activemq.artemis.core.management.impl.QueueControlImpl;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -510,6 +513,73 @@ public class LargeMessageCompressTest extends 
LargeMessageTest {
       validateNoFilesOnLargeDir();
    }
 
+   @Test
+   public void testLargeMessageCompressionLevel() throws Exception {
+
+      SimpleString address1 = new SimpleString("address1");
+      SimpleString address2 = new SimpleString("address2");
+      SimpleString address3 = new SimpleString("address3");
+
+      ActiveMQServer server = createServer(true, true);
+      server.start();
+
+      ServerLocator locator1 = 
ActiveMQClient.createServerLocator("tcp://localhost:61616?compressionLevel=1");
+      ServerLocator locator2 = 
ActiveMQClient.createServerLocator("vm://0?compressionLevel=5");
+      ServerLocator locator3 = ActiveMQClient.createServerLocator("vm://0");
+      locator1.setCompressLargeMessage(true);
+      locator2.setCompressLargeMessage(true);
+      locator3.setCompressLargeMessage(true);
+      locator3.setCompressionLevel(9);
+
+      ClientSessionFactory sf1 = locator1.createSessionFactory();
+      ClientSessionFactory sf2 = locator2.createSessionFactory();
+      ClientSessionFactory sf3 = locator3.createSessionFactory();
+      ClientSession session1 = sf1.createSession(false, true, true);
+      ClientSession session2 = sf2.createSession(false, true, true);
+      ClientSession session3 = sf3.createSession(false, true, true);
+
+      ClientProducer producer1 = session1.createProducer(address1);
+      ClientProducer producer2 = session2.createProducer(address2);
+      ClientProducer producer3 = session3.createProducer(address3);
+
+      session1.createQueue(new QueueConfiguration(address1));
+      session2.createQueue(new QueueConfiguration(address2));
+      session3.createQueue(new QueueConfiguration(address3));
+
+      String inputString = 
"blahblahblah??blahblahblahblahblah??blablahblah??blablahblah??bla";
+      for (int i = 0; i < 20; i++) {
+         inputString = inputString + inputString;
+      }
+
+      ClientMessage message = session1.createMessage(true);
+      message.getBodyBuffer().writeString(inputString);
+      producer1.send(message);
+      producer2.send(message);
+      producer3.send(message);
+
+      QueueControl queueControl1 = (QueueControl)server.getManagementService().
+         getResource(ResourceNames.QUEUE + address1);
+      QueueControl queueControl2 = (QueueControl)server.getManagementService().
+         getResource(ResourceNames.QUEUE + address2);
+      QueueControl queueControl3 = (QueueControl)server.getManagementService().
+         getResource(ResourceNames.QUEUE + address3);
+
+      assertTrue(1 == queueControl1.getMessageCount());
+      assertTrue(1 == queueControl2.getMessageCount());
+      assertTrue(1 == queueControl3.getMessageCount());
+      assertTrue(message.getPersistentSize() > 
queueControl1.getPersistentSize());
+      assertTrue(queueControl1.getPersistentSize() > 
queueControl2.getPersistentSize());
+      assertTrue(queueControl2.getPersistentSize() > 
queueControl3.getPersistentSize());
+
+      sf1.close();
+      sf2.close();
+      sf3.close();
+      locator1.close();
+      locator2.close();
+      locator3.close();
+
+   }
+
    @Override
    @Test
    public void testSendServerMessage() throws Exception {
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/PreACKJMSTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/PreACKJMSTest.java
index 608ac8ecab..fe0157b63e 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/PreACKJMSTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/PreACKJMSTest.java
@@ -149,7 +149,7 @@ public class PreACKJMSTest extends JMSTestBase {
 
       ArrayList<String> connectors = registerConnectors(server, 
connectorConfigs);
 
-      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, connectors, null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE, ActiveMQClient.DEFAULT_CONS [...]
+      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, connectors, null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, ActiveMQClient.DEFAULT_CONSUME [...]
    }
 
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/ReSendMessageTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/ReSendMessageTest.java
index cbadb6ab09..91c29cb21e 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/ReSendMessageTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/ReSendMessageTest.java
@@ -225,7 +225,7 @@ public class ReSendMessageTest extends JMSTestBase {
       int reconnectAttempts = -1;
       int callTimeout = 30000;
 
-      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, true, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE, 
ActiveMQClient.DEFAULT_CONSUMER_MAX_RA [...]
+      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, true, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SI [...]
    }
 
    @Override
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/SessionClosedOnRemotingConnectionFailureTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/SessionClosedOnRemotingConnectionFailureTest.java
index d511f1951e..4ac88ab79a 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/SessionClosedOnRemotingConnectionFailureTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/SessionClosedOnRemotingConnectionFailureTest.java
@@ -49,7 +49,7 @@ public class SessionClosedOnRemotingConnectionFailureTest 
extends JMSTestBase {
       List<TransportConfiguration> connectorConfigs = new ArrayList<>();
       connectorConfigs.add(new TransportConfiguration(INVM_CONNECTOR_FACTORY));
 
-      jmsServer.createConnectionFactory("cffoo", false, JMSFactoryType.CF, 
registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, ActiveMQClient.DEFAULT_CALL_TIMEOUT, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE,  [...]
+      jmsServer.createConnectionFactory("cffoo", false, JMSFactoryType.CF, 
registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, ActiveMQClient.DEFAULT_CALL_TIMEOUT, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, Act [...]
 
       cf = (ConnectionFactory) namingContext.lookup("/cffoo");
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TextMessageTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TextMessageTest.java
index eeed30af0e..ccedc29c21 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TextMessageTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TextMessageTest.java
@@ -176,6 +176,6 @@ public class TextMessageTest extends JMSTestBase {
       int reconnectAttempts = -1;
       int callTimeout = 30000;
 
-      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, true, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE, 
ActiveMQClient.DEFAULT_CONSUMER_MAX_RA [...]
+      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, true, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SI [...]
    }
 }
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/InvalidConnectorTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/InvalidConnectorTest.java
index 7348e2a16b..97e9bbab51 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/InvalidConnectorTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/InvalidConnectorTest.java
@@ -45,7 +45,7 @@ public class InvalidConnectorTest extends JMSTestBase {
       int reconnectAttempts = -1;
       int callTimeout = 30000;
 
-      jmsServer.createConnectionFactory("invalid-cf", false, 
JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE, ActiveMQClient.DEFA [...]
+      jmsServer.createConnectionFactory("invalid-cf", false, 
JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, ActiveMQClient.DEFAULT [...]
 
       ActiveMQConnectionFactory invalidCf = (ActiveMQConnectionFactory) 
namingContext.lookup("/invalid-cf");
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/divert/DivertAndACKClientTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/divert/DivertAndACKClientTest.java
index aad33238b9..4baf5f48e7 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/divert/DivertAndACKClientTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/divert/DivertAndACKClientTest.java
@@ -108,7 +108,7 @@ public class DivertAndACKClientTest extends JMSTestBase {
       int reconnectAttempts = -1;
       int callTimeout = 30000;
 
-      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_CONSUMER_WINDOW [...]
+      
jmsServer.createConnectionFactory("ManualReconnectionToSingleServerTest", 
false, JMSFactoryType.CF, registerConnectors(server, connectorConfigs), null, 
ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, callTimeout, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEV [...]
                                         
ActiveMQClient.DEFAULT_BLOCK_ON_DURABLE_SEND, 
ActiveMQClient.DEFAULT_BLOCK_ON_NON_DURABLE_SEND, 
ActiveMQClient.DEFAULT_AUTO_GROUP, ActiveMQClient.DEFAULT_PRE_ACKNOWLEDGE, 
ActiveMQClient.DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME, 
ActiveMQClient.DEFAULT_ACK_BATCH_SIZE, ActiveMQClient.DEFAULT_ACK_BATCH_SIZE, 
ActiveMQClient.DEFAULT_USE_GLOBAL_POOLS, 
ActiveMQClient.DEFAULT_SCHEDULED_THREAD_POOL_MAX_SIZE, 
ActiveMQClient.DEFAULT_THREAD_POOL_MAX_ [...]
    }
 
diff --git 
a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
 
b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
index 52986b413d..dcf540205a 100644
--- 
a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
+++ 
b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
@@ -277,7 +277,7 @@ public class LocalTestServer implements Server, Runnable {
       ArrayList<String> connectors = new ArrayList<>();
       connectors.add("netty");
 
-      getJMSServerManager().createConnectionFactory(objectName, false, type, 
connectors, clientId, ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, ActiveMQClient.DEFAULT_CALL_TIMEOUT, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, prefetchSize, 
ActiveMQClient.DEFAULT_CONSUMER_MAX_RATE, ActiveMQClient.DE [...]
+      getJMSServerManager().createConnectionFactory(objectName, false, type, 
connectors, clientId, ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD, 
ActiveMQClient.DEFAULT_CONNECTION_TTL, ActiveMQClient.DEFAULT_CALL_TIMEOUT, 
ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT, 
ActiveMQClient.DEFAULT_CACHE_LARGE_MESSAGE_CLIENT, 
ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, 
ActiveMQClient.DEFAULT_COMPRESS_LARGE_MESSAGES, 
ActiveMQClient.DEFAULT_COMPRESSION_LEVEL, prefetchSize, ActiveMQClient.DE [...]
    }
 
    @Override
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQResourceAdapterConfigTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQResourceAdapterConfigTest.java
index 8a0b86e7a1..de463f79cb 100644
--- 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQResourceAdapterConfigTest.java
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQResourceAdapterConfigTest.java
@@ -342,6 +342,12 @@ public class ActiveMQResourceAdapterConfigTest extends 
ActiveMQTestBase {
       "         <config-property-value>false</config-property-value>" +
       "      </config-property>\n" +
       "      <config-property>\n" +
+      "         <description>The level of compression to use. Must be -1 or 
between 0-9</description>" +
+      "         <config-property-name>CompressionLevel</config-property-name>" 
+
+      "         <config-property-type>int</config-property-type>" +
+      "         <config-property-value>-1</config-property-value>" +
+      "      </config-property>\n" +
+      "      <config-property>\n" +
       "         <description>The timeout in milliseconds for failover call (or 
-1 for infinite)</description>\n" +
       "         
<config-property-name>CallFailoverTimeout</config-property-name>\n" +
       "         <config-property-type>long</config-property-type>\n" +


Reply via email to