blob: 9f4ac091fb077d700b2471e932749a66e3fb2d87 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="" >
<head>
<title>Large Messages ยท ActiveMQ Artemis Documentation</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="">
<meta name="generator" content="GitBook 3.1.1">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="paging.html" />
<link rel="prev" href="message-expiry.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="notice.html">
<a href="notice.html">
Legal Notice
</a>
</li>
<li class="chapter " data-level="1.3" data-path="preface.html">
<a href="preface.html">
Preface
</a>
</li>
<li class="chapter " data-level="1.4" data-path="project-info.html">
<a href="project-info.html">
Project Info
</a>
</li>
<li class="chapter " data-level="1.5" data-path="versions.html">
<a href="versions.html">
Versions
</a>
</li>
<li class="chapter " data-level="1.6" data-path="messaging-concepts.html">
<a href="messaging-concepts.html">
Messaging Concepts
</a>
</li>
<li class="chapter " data-level="1.7" data-path="architecture.html">
<a href="architecture.html">
Architecture
</a>
</li>
<li class="chapter " data-level="1.8" data-path="using-server.html">
<a href="using-server.html">
Using the Server
</a>
</li>
<li class="chapter " data-level="1.9" data-path="upgrading.html">
<a href="upgrading.html">
Upgrading
</a>
</li>
<li class="chapter " data-level="1.10" data-path="address-model.html">
<a href="address-model.html">
Address Model
</a>
</li>
<li class="chapter " data-level="1.11" data-path="protocols-interoperability.html">
<a href="protocols-interoperability.html">
Protocols and Interoperability
</a>
</li>
<li class="chapter " data-level="1.12" data-path="amqp.html">
<a href="amqp.html">
AMQP
</a>
</li>
<li class="chapter " data-level="1.13" data-path="mqtt.html">
<a href="mqtt.html">
MQTT
</a>
</li>
<li class="chapter " data-level="1.14" data-path="stomp.html">
<a href="stomp.html">
STOMP
</a>
</li>
<li class="chapter " data-level="1.15" data-path="openwire.html">
<a href="openwire.html">
OpenWire
</a>
</li>
<li class="chapter " data-level="1.16" data-path="core.html">
<a href="core.html">
Core
</a>
</li>
<li class="chapter " data-level="1.17" data-path="jms-core-mapping.html">
<a href="jms-core-mapping.html">
Mapping JMS Concepts to the Core API
</a>
</li>
<li class="chapter " data-level="1.18" data-path="using-jms.html">
<a href="using-jms.html">
Using JMS
</a>
</li>
<li class="chapter " data-level="1.19" data-path="client-classpath.html">
<a href="client-classpath.html">
The Client Classpath
</a>
</li>
<li class="chapter " data-level="1.20" data-path="examples.html">
<a href="examples.html">
Examples
</a>
</li>
<li class="chapter " data-level="1.21" data-path="wildcard-routing.html">
<a href="wildcard-routing.html">
Routing Messages With Wild Cards
</a>
</li>
<li class="chapter " data-level="1.22" data-path="wildcard-syntax.html">
<a href="wildcard-syntax.html">
Wildcard Syntax
</a>
</li>
<li class="chapter " data-level="1.23" data-path="filter-expressions.html">
<a href="filter-expressions.html">
Filter Expressions
</a>
</li>
<li class="chapter " data-level="1.24" data-path="persistence.html">
<a href="persistence.html">
Persistence
</a>
</li>
<li class="chapter " data-level="1.25" data-path="configuring-transports.html">
<a href="configuring-transports.html">
Configuring Transports
</a>
</li>
<li class="chapter " data-level="1.26" data-path="config-reload.html">
<a href="config-reload.html">
Configuration Reload
</a>
</li>
<li class="chapter " data-level="1.27" data-path="connection-ttl.html">
<a href="connection-ttl.html">
Detecting Dead Connections
</a>
</li>
<li class="chapter " data-level="1.28" data-path="slow-consumers.html">
<a href="slow-consumers.html">
Detecting Slow Consumers
</a>
</li>
<li class="chapter " data-level="1.29" data-path="network-isolation.html">
<a href="network-isolation.html">
Avoiding Network Isolation
</a>
</li>
<li class="chapter " data-level="1.30" data-path="critical-analysis.html">
<a href="critical-analysis.html">
Detecting Broker Issues (Critical Analysis)
</a>
</li>
<li class="chapter " data-level="1.31" data-path="transaction-config.html">
<a href="transaction-config.html">
Resource Manager Configuration
</a>
</li>
<li class="chapter " data-level="1.32" data-path="flow-control.html">
<a href="flow-control.html">
Flow Control
</a>
</li>
<li class="chapter " data-level="1.33" data-path="send-guarantees.html">
<a href="send-guarantees.html">
Guarantees of sends and commits
</a>
</li>
<li class="chapter " data-level="1.34" data-path="undelivered-messages.html">
<a href="undelivered-messages.html">
Message Redelivery and Undelivered Messages
</a>
</li>
<li class="chapter " data-level="1.35" data-path="message-expiry.html">
<a href="message-expiry.html">
Message Expiry
</a>
</li>
<li class="chapter active" data-level="1.36" data-path="large-messages.html">
<a href="large-messages.html">
Large Messages
</a>
</li>
<li class="chapter " data-level="1.37" data-path="paging.html">
<a href="paging.html">
Paging
</a>
</li>
<li class="chapter " data-level="1.38" data-path="scheduled-messages.html">
<a href="scheduled-messages.html">
Scheduled Messages
</a>
</li>
<li class="chapter " data-level="1.39" data-path="last-value-queues.html">
<a href="last-value-queues.html">
Last-Value Queues
</a>
</li>
<li class="chapter " data-level="1.40" data-path="ring-queues.html">
<a href="ring-queues.html">
Ring Queues
</a>
</li>
<li class="chapter " data-level="1.41" data-path="retroactive-addresses.html">
<a href="retroactive-addresses.html">
Retroactive Addresses
</a>
</li>
<li class="chapter " data-level="1.42" data-path="exclusive-queues.html">
<a href="exclusive-queues.html">
Exclusive Queues
</a>
</li>
<li class="chapter " data-level="1.43" data-path="message-grouping.html">
<a href="message-grouping.html">
Message Grouping
</a>
</li>
<li class="chapter " data-level="1.44" data-path="consumer-priority.html">
<a href="consumer-priority.html">
Consumer Priority
</a>
</li>
<li class="chapter " data-level="1.45" data-path="pre-acknowledge.html">
<a href="pre-acknowledge.html">
Extra Acknowledge Modes
</a>
</li>
<li class="chapter " data-level="1.46" data-path="management.html">
<a href="management.html">
Management
</a>
</li>
<li class="chapter " data-level="1.47" data-path="management-console.html">
<a href="management-console.html">
Management Console
</a>
</li>
<li class="chapter " data-level="1.48" data-path="metrics.html">
<a href="metrics.html">
Metrics
</a>
</li>
<li class="chapter " data-level="1.49" data-path="security.html">
<a href="security.html">
Security
</a>
</li>
<li class="chapter " data-level="1.50" data-path="masking-passwords.html">
<a href="masking-passwords.html">
Masking Passwords
</a>
</li>
<li class="chapter " data-level="1.51" data-path="broker-plugins.html">
<a href="broker-plugins.html">
Broker Plugins
</a>
</li>
<li class="chapter " data-level="1.52" data-path="resource-limits.html">
<a href="resource-limits.html">
Resource Limits
</a>
</li>
<li class="chapter " data-level="1.53" data-path="jms-bridge.html">
<a href="jms-bridge.html">
The JMS Bridge
</a>
</li>
<li class="chapter " data-level="1.54" data-path="client-reconnection.html">
<a href="client-reconnection.html">
Client Reconnection and Session Reattachment
</a>
</li>
<li class="chapter " data-level="1.55" data-path="diverts.html">
<a href="diverts.html">
Diverting and Splitting Message Flows
</a>
</li>
<li class="chapter " data-level="1.56" data-path="core-bridges.html">
<a href="core-bridges.html">
Core Bridges
</a>
</li>
<li class="chapter " data-level="1.57" data-path="transformers.html">
<a href="transformers.html">
Transformers
</a>
</li>
<li class="chapter " data-level="1.58" data-path="duplicate-detection.html">
<a href="duplicate-detection.html">
Duplicate Message Detection
</a>
</li>
<li class="chapter " data-level="1.59" data-path="clusters.html">
<a href="clusters.html">
Clusters
</a>
</li>
<li class="chapter " data-level="1.60" data-path="federation.html">
<a href="federation.html">
Federation
</a>
<ul class="articles">
<li class="chapter " data-level="1.60.1" data-path="federation-address.html">
<a href="federation-address.html">
Address Federation
</a>
</li>
<li class="chapter " data-level="1.60.2" data-path="federation-queue.html">
<a href="federation-queue.html">
Queue Federation
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.61" data-path="ha.html">
<a href="ha.html">
High Availability and Failover
</a>
</li>
<li class="chapter " data-level="1.62" data-path="graceful-shutdown.html">
<a href="graceful-shutdown.html">
Graceful Server Shutdown
</a>
</li>
<li class="chapter " data-level="1.63" data-path="libaio.html">
<a href="libaio.html">
Libaio Native Libraries
</a>
</li>
<li class="chapter " data-level="1.64" data-path="thread-pooling.html">
<a href="thread-pooling.html">
Thread management
</a>
</li>
<li class="chapter " data-level="1.65" data-path="web-server.html">
<a href="web-server.html">
Embedded Web Server
</a>
</li>
<li class="chapter " data-level="1.66" data-path="logging.html">
<a href="logging.html">
Logging
</a>
</li>
<li class="chapter " data-level="1.67" data-path="rest.html">
<a href="rest.html">
REST Interface
</a>
</li>
<li class="chapter " data-level="1.68" data-path="embedding-activemq.html">
<a href="embedding-activemq.html">
Embedding the Broker
</a>
</li>
<li class="chapter " data-level="1.69" data-path="karaf.html">
<a href="karaf.html">
Apache Karaf
</a>
</li>
<li class="chapter " data-level="1.70" data-path="tomcat.html">
<a href="tomcat.html">
Apache Tomcat
</a>
</li>
<li class="chapter " data-level="1.71" data-path="spring-integration.html">
<a href="spring-integration.html">
Spring Integration
</a>
</li>
<li class="chapter " data-level="1.72" data-path="cdi-integration.html">
<a href="cdi-integration.html">
CDI Integration
</a>
</li>
<li class="chapter " data-level="1.73" data-path="intercepting-operations.html">
<a href="intercepting-operations.html">
Intercepting Operations
</a>
</li>
<li class="chapter " data-level="1.74" data-path="data-tools.html">
<a href="data-tools.html">
Data Tools
</a>
</li>
<li class="chapter " data-level="1.75" data-path="maven-plugin.html">
<a href="maven-plugin.html">
Maven Plugin
</a>
</li>
<li class="chapter " data-level="1.76" data-path="unit-testing.html">
<a href="unit-testing.html">
Unit Testing
</a>
</li>
<li class="chapter " data-level="1.77" data-path="perf-tuning.html">
<a href="perf-tuning.html">
Troubleshooting and Performance Tuning
</a>
</li>
<li class="chapter " data-level="1.78" data-path="configuration-index.html">
<a href="configuration-index.html">
Configuration Reference
</a>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Large Messages</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="large-messages">Large Messages</h1>
<p>Apache ActiveMQ Artemis can be configured to store messages as files when these messages are beyond a configured value.</p>
<p>Instead of keeping these messages in memory ActiveMQ Artemis will hold just a thin object on the queues with a
reference to a file into a specific folder configured as large-messages-directory.</p>
<p>This is supported on Core Protocol and on the AMQP Protocol.</p>
<h2 id="configuring-the-server">Configuring the server</h2>
<p>Large messages are stored on a disk directory on the server side, as configured
on the main configuration file.</p>
<p>The configuration property <code>large-messages-directory</code> specifies where large
messages are stored. For JDBC persistence the <code>large-message-table</code> should be
configured.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">configuration</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">&quot;urn:activemq&quot;</span>
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
<span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">&quot;urn:activemq /schema/artemis-server.xsd&quot;</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">core</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">&quot;urn:activemq:core&quot;</span> <span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">&quot;urn:activemq:core&quot;</span>&gt;</span>
...
<span class="hljs-tag">&lt;<span class="hljs-name">large-messages-directory</span>&gt;</span>/data/large-messages<span class="hljs-tag">&lt;/<span class="hljs-name">large-messages-directory</span>&gt;</span>
...
<span class="hljs-tag">&lt;/<span class="hljs-name">core</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">configuration</span>&gt;</span>
</code></pre>
<p>By default the large message directory is <code>data/largemessages</code> and
<code>large-message-table</code> is configured as &quot;LARGE_MESSAGE_TABLE&quot;.</p>
<p>For the best performance we recommend using file store with large messages
directory stored on a different physical volume to the message journal or
paging directory.</p>
<h2 id="configuring-the-core-client">Configuring the Core Client</h2>
<p>Any message larger than a certain size is considered a large message. Large
messages will be split up and sent in fragments. This is determined by the URL
parameter <code>minLargeMessageSize</code></p>
<blockquote>
<p><strong>Note:</strong></p>
<p>Apache ActiveMQ Artemis messages are encoded using 2 bytes per character so
if the message data is filled with ASCII characters (which are 1 byte) the
size of the resulting Apache ActiveMQ Artemis message would roughly double.
This is important when calculating the size of a &quot;large&quot; message as it may
appear to be less than the <code>minLargeMessageSize</code> before it is sent, but it
then turns into a &quot;large&quot; message once it is encoded.</p>
</blockquote>
<p>The default value is 100KiB.</p>
<p><a href="configuring-transports.html#configuring-the-transport-directly-from-the-client">Configuring the transport directly from the client
side</a>
will provide more information on how to instantiate the core session factory or
JMS connection factory.</p>
<h2 id="compressed-large-messages-on-core-protocol">Compressed Large Messages on Core Protocol</h2>
<p>You can choose to send large messages in compressed form using
<code>compressLargeMessages</code> URL parameter.</p>
<p>If you specify the boolean URL parameter <code>compressLargeMessages</code> as true, The
system will use the ZIP algorithm to compress the message body as the message
is transferred to the server&apos;s side. Notice that there&apos;s no special treatment
at the server&apos;s side, all the compressing and uncompressing is done at the
client.</p>
<p>If the compressed size of a large message is below <code>minLargeMessageSize</code>, it is
sent to server as regular messages. This means that the message won&apos;t be
written into the server&apos;s large-message data directory, thus reducing the disk
I/O.</p>
<h2 id="streaming-large-messages-from-core-protocol">Streaming large messages from Core Protocol</h2>
<p>Apache ActiveMQ Artemis supports setting the body of messages using input and
output streams (<code>java.lang.io</code>)</p>
<p>These streams are then used directly for sending (input streams) and receiving
(output streams) messages.</p>
<p>When receiving messages there are 2 ways to deal with the output stream; you
may choose to block while the output stream is recovered using the method
<code>ClientMessage.saveOutputStream</code> or alternatively using the method
<code>ClientMessage.setOutputstream</code> which will asynchronously write the message to
the stream. If you choose the latter the consumer must be kept alive until the
message has been fully received.</p>
<p>You can use any kind of stream you like. The most common use case is to send
files stored in your disk, but you could also send things like JDBC Blobs,
<code>SocketInputStream</code>, things you recovered from <code>HTTPRequests</code> etc. Anything as
long as it implements <code>java.io.InputStream</code> for sending messages or
<code>java.io.OutputStream</code> for receiving them.</p>
<h3 id="streaming-over-core-api">Streaming over Core API</h3>
<p>The following table shows a list of methods available at <code>ClientMessage</code> which
are also available through JMS by the use of object properties.</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>JMS Equivalent</th>
</tr>
</thead>
<tbody>
<tr>
<td>setBodyInputStream(InputStream)</td>
<td>Set the InputStream used to read a message body when sending it.</td>
<td>JMS_AMQ_InputStream</td>
</tr>
<tr>
<td>setOutputStream(OutputStream)</td>
<td>Set the OutputStream that will receive the body of a message. This method does not block.</td>
<td>JMS_AMQ_OutputStream</td>
</tr>
<tr>
<td>saveOutputStream(OutputStream)</td>
<td>Save the body of the message to the <code>OutputStream</code>. It will block until the entire content is transferred to the <code>OutputStream</code>.</td>
<td>JMS_AMQ_SaveStream</td>
</tr>
</tbody>
</table>
<p>To set the output stream when receiving a core message:</p>
<pre><code class="lang-java">ClientMessage msg = consumer.receive(...);
<span class="hljs-comment">// This will block here until the stream was transferred</span>
msg.saveOutputStream(someOutputStream);
ClientMessage msg2 = consumer.receive(...);
<span class="hljs-comment">// This will not wait the transfer to finish</span>
msg2.setOutputStream(someOtherOutputStream);
</code></pre>
<p>Set the input stream when sending a core message:</p>
<pre><code class="lang-java">ClientMessage msg = session.createMessage();
msg.setInputStream(dataInputStream);
</code></pre>
<p>Notice also that for messages with more than 2GiB the getBodySize() will return
invalid values since this is an integer (which is also exposed to the JMS API).
On those cases you can use the message property _AMQ_LARGE_SIZE.</p>
<h3 id="streaming-over-jms">Streaming over JMS</h3>
<p>When using JMS, Apache ActiveMQ Artemis maps the streaming methods on the core
API (see ClientMessage API table above) by setting object properties . You can
use the method <code>Message.setObjectProperty</code> to set the input and output streams.</p>
<p>The <code>InputStream</code> can be defined through the JMS Object Property
JMS_AMQ_InputStream on messages being sent:</p>
<pre><code class="lang-java">BytesMessage message = session.createBytesMessage();
FileInputStream fileInputStream = <span class="hljs-keyword">new</span> FileInputStream(fileInput);
BufferedInputStream bufferedInput = <span class="hljs-keyword">new</span> BufferedInputStream(fileInputStream);
message.setObjectProperty(<span class="hljs-string">&quot;JMS_AMQ_InputStream&quot;</span>, bufferedInput);
someProducer.send(message);
</code></pre>
<p>The <code>OutputStream</code> can be set through the JMS Object Property
JMS_AMQ_SaveStream on messages being received in a blocking way.</p>
<pre><code class="lang-java">BytesMessage messageReceived = (BytesMessage)messageConsumer.receive(<span class="hljs-number">120000</span>);
File outputFile = <span class="hljs-keyword">new</span> File(<span class="hljs-string">&quot;huge_message_received.dat&quot;</span>);
FileOutputStream fileOutputStream = <span class="hljs-keyword">new</span> FileOutputStream(outputFile);
BufferedOutputStream bufferedOutput = <span class="hljs-keyword">new</span> BufferedOutputStream(fileOutputStream);
<span class="hljs-comment">// This will block until the entire content is saved on disk</span>
messageReceived.setObjectProperty(<span class="hljs-string">&quot;JMS_AMQ_SaveStream&quot;</span>, bufferedOutput);
</code></pre>
<p>Setting the <code>OutputStream</code> could also be done in a non blocking way
using the property JMS_AMQ_OutputStream.</p>
<pre><code class="lang-java"><span class="hljs-comment">// This won&apos;t wait the stream to finish. You need to keep the consumer active.</span>
messageReceived.setObjectProperty(<span class="hljs-string">&quot;JMS_AMQ_OutputStream&quot;</span>, bufferedOutput);
</code></pre>
<blockquote>
<p><strong>Note:</strong></p>
<p>When using JMS, Streaming large messages are only supported on
<code>StreamMessage</code> and <code>BytesMessage</code>.</p>
</blockquote>
<h3 id="streaming-alternative-on-core-protocol">Streaming Alternative on Core Protocol</h3>
<p>If you choose not to use the <code>InputStream</code> or <code>OutputStream</code> capability of
Apache ActiveMQ Artemis You could still access the data directly in an
alternative fashion.</p>
<p>On the Core API just get the bytes of the body as you normally would.</p>
<pre><code class="lang-java">ClientMessage msg = consumer.receive();
<span class="hljs-keyword">byte</span>[] bytes = <span class="hljs-keyword">new</span> <span class="hljs-keyword">byte</span>[<span class="hljs-number">1024</span>];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span> ; i &lt; msg.getBodySize(); i += bytes.length)
{
msg.getBody().readBytes(bytes);
<span class="hljs-comment">// Whatever you want to do with the bytes</span>
}
</code></pre>
<p>If using JMS API, <code>BytesMessage</code> and <code>StreamMessage</code> also supports it
transparently.</p>
<pre><code class="lang-java">BytesMessage rm = (BytesMessage)cons.receive(<span class="hljs-number">10000</span>);
<span class="hljs-keyword">byte</span> data[] = <span class="hljs-keyword">new</span> <span class="hljs-keyword">byte</span>[<span class="hljs-number">1024</span>];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i &lt; rm.getBodyLength(); i += <span class="hljs-number">1024</span>)
{
<span class="hljs-keyword">int</span> numberOfBytes = rm.readBytes(data);
<span class="hljs-comment">// Do whatever you want with the data</span>
}
</code></pre>
<h2 id="configuring-amqp-acceptor">Configuring AMQP Acceptor</h2>
<p>You can configure the property <code>amqpMinLargeMessageSize</code> at the acceptor.</p>
<p>The default value is 102400 (100KBytes).</p>
<p>Setting it to -1 will disable large message support.</p>
<p><strong>Warning:</strong> setting amqpMinLargeMessageSize to -1, your AMQP message might be stored as a Core Large Message if the
size of the message does not fit into the journal. This is the former semantic of the broker and it is kept this way for
compatibility reasons.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">acceptors</span>&gt;</span>
<span class="hljs-comment">&lt;!-- AMQP Acceptor. Listens on default AMQP port for AMQP traffic.--&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">acceptor</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;amqp&quot;</span>&gt;</span>tcp://0.0.0.0:5672?; ..... amqpMinLargeMessageSize=102400; .... <span class="hljs-tag">&lt;/<span class="hljs-name">acceptor</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">acceptors</span>&gt;</span>
</code></pre>
<h2 id="large-message-example">Large message example</h2>
<p>Please see the <a href="examples.html#large-message">Large Message Example</a> which shows
how large messages are configured and used with JMS.</p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="message-expiry.html" class="navigation navigation-prev " aria-label="Previous page: Message Expiry">
<i class="fa fa-angle-left"></i>
</a>
<a href="paging.html" class="navigation navigation-next " aria-label="Next page: Paging">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Large Messages","level":"1.36","depth":1,"next":{"title":"Paging","level":"1.37","depth":1,"path":"paging.md","ref":"paging.md","articles":[]},"previous":{"title":"Message Expiry","level":"1.35","depth":1,"path":"message-expiry.md","ref":"message-expiry.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/artemis","issues":"https://issues.apache.org/jira/browse/ARTEMIS","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis User Guide and Reference Documentation"},"file":{"path":"large-messages.md","mtime":"2020-04-27T19:30:24.000Z","type":"markdown"},"gitbook":{"version":"3.1.1","time":"2020-04-29T20:47:49.444Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="gitbook/gitbook-plugin-search/search.js"></script>
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>