blob: d25f0b20a4aaf9eba8641b25800b29bade5c6d24 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2021-09-26 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Apache James Server 3 - RabbitMQ Configuration</title>
<style type="text/css" media="all">
@import url("../css/james.css");
@import url("../css/maven-base.css");
@import url("../css/maven-theme.css");
@import url("../css/site.css");
@import url("../js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("../js/jquery/css/print.css");
@import url("../js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="../js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="../js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
<meta name="Date-Revision-yyyymmdd" content="20210926" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../index.html" id="bannerLeft" title="james-logo.png">
<img src="../images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2021-09-26</span>
</div>
<div class="xright"> <a href="../index.html" title="Home">Home</a>
|
<a href="../documentation.html" title="James">James</a>
|
<a href="../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="collapsed">
<a href="../documentation.html" title="About James">About James</a>
</li>
<li class="expanded">
<a href="../server/index.html" title="Server">Server</a>
<ul>
<li class="none">
<a href="../server/advantages.html" title="Advantages">Advantages</a>
</li>
<li class="none">
<a href="../server/objectives.html" title="Objectives">Objectives</a>
</li>
<li class="expanded">
<a href="../server/quick-start.html" title="User Manual">User Manual</a>
<ul>
<li class="collapsed">
<a href="../server/features.html" title="1. Features">1. Features</a>
</li>
<li class="none">
<a href="../server/packaging.html" title="2. Packaging">2. Packaging</a>
</li>
<li class="collapsed">
<a href="../server/install.html" title="3. Install James">3. Install James</a>
</li>
<li class="expanded">
<a href="../server/config.html" title="4. Configure James">4. Configure James</a>
<ul>
<li class="none">
<a href="../server/config-listeners.html" title="Additional mailbox listeners">Additional mailbox listeners</a>
</li>
<li class="none">
<a href="../server/config-antispam.html" title="Anti Spam">Anti Spam</a>
</li>
<li class="none">
<a href="../server/config-blob-export.html" title="Blob Export">Blob Export</a>
</li>
<li class="none">
<a href="../server/config-blobstore.html" title="BlobStore">BlobStore</a>
</li>
<li class="none">
<a href="../server/config-cassandra.html" title="Cassandra">Cassandra</a>
</li>
<li class="none">
<a href="../server/config-elasticsearch.html" title="ElasticSearch">ElasticSearch</a>
</li>
<li class="none">
<a href="../server/config-vault.html" title="Deleted Messages Vault">Deleted Messages Vault</a>
</li>
<li class="none">
<a href="../server/config-dnsservice.html" title="DNS Service">DNS Service</a>
</li>
<li class="none">
<a href="../server/config-domainlist.html" title="Domain List">Domain List</a>
</li>
<li class="none">
<a href="../server/config-fetchmail.html" title="FetchMail">FetchMail</a>
</li>
<li class="none">
<a href="../server/config-guice.html" title="Guice">Guice</a>
</li>
<li class="none">
<a href="../server/config-imap4.html" title="IMAP4">IMAP4</a>
</li>
<li class="none">
<a href="../server/config-jmap.html" title="JMAP">JMAP</a>
</li>
<li class="none">
<a href="../server/config-mailrepositorystore.html" title="Mail Repository Stores">Mail Repository Stores</a>
</li>
<li class="none">
<a href="../server/config-mailbox.html" title="Mailbox">Mailbox</a>
</li>
<li class="none">
<a href="../server/config-mailetcontainer.html" title="Mailet Container">Mailet Container</a>
</li>
<li class="none">
<a href="../server/config-healthcheck.html" title="Periodical Health Checks">Periodical Health Checks</a>
</li>
<li class="none">
<a href="../server/config-pop3.html" title="POP3">POP3</a>
</li>
<li class="none">
<a href="../server/config-quota.html" title="Quota">Quota</a>
</li>
<li class="none">
<strong>RabbitMQ</strong>
</li>
<li class="none">
<a href="../server/config-recipientrewritetable.html" title="Recipient Rewrite">Recipient Rewrite</a>
</li>
<li class="none">
<a href="../server/config-smtp-lmtp.html" title="SMTP LMTP">SMTP LMTP</a>
</li>
<li class="none">
<a href="../server/config-sieve.html" title="Sieve">Sieve</a>
</li>
<li class="none">
<a href="../server/config-ssl-tls.html" title="SSL/TLS">SSL/TLS</a>
</li>
<li class="none">
<a href="../server/config-system.html" title="System">System</a>
</li>
<li class="none">
<a href="../server/config-spring-jpa-postgres.html" title="Spring JPA Postgres">Spring JPA Postgres</a>
</li>
<li class="none">
<a href="../server/config-users.html" title="Users">Users</a>
</li>
<li class="none">
<a href="../server/config-webadmin.html" title="WebAdmin">WebAdmin</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../server/manage.html" title="5. Manage">5. Manage</a>
</li>
<li class="collapsed">
<a href="../server/monitor.html" title="6. Monitor">6. Monitor</a>
</li>
<li class="collapsed">
<a href="../server/upgrade.html" title="7. Upgrade">7. Upgrade</a>
</li>
<li class="collapsed">
<a href="../server/dev.html" title="8. Developers Corner">8. Developers Corner</a>
</li>
</ul>
</li>
<li class="none">
<a href="../mail.html#James_Mailing_lists" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../server/release-notes.html" title="Release Notes">Release Notes</a>
</li>
<li class="none">
<a href="../server/apidocs/index.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
</li>
<li class="none">
<a href="https://github.com/apache/james-project" title="Sources">Sources</a>
</li>
<li class="none">
<a href="../server/rfcs.html" title="RFCs">RFCs</a>
</li>
<li class="none">
<a href="../download.cgi#Apache_James_Server" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../mailet/index.html" title="Mailets">Mailets</a>
</li>
<li class="collapsed">
<a href="../mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="../protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="../mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<section>
<h2><a name="RabbitMQ_Server_Configuration"></a>RabbitMQ Server Configuration</h2>
<p>
RabbitMQ is used in distributed James in order to have a distributed MailQueue and distributed Event dispatching system.
This configuration helps you configure components using RabbitMQ in case you want to setup a distributed James.
And it is only applicable with Guice products.
</p>
<p>
Consult <a class="externalLink" href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties">rabbitmq.properties</a>
in GIT to get some examples and hints.
</p>
<p>
RabbitMQ Configuration
</p>
<dl>
<dt><b>uri</b></dt>
<dd>
the amqp URI pointing to RabbitMQ server. Details about amqp URI format is in <a class="externalLink" href="https://www.rabbitmq.com/uri-spec.html">RabbitMQ URI Specification</a>
</dd>
<dt><b>management.uri</b></dt>
<dd>
the URI pointing to RabbitMQ Management Service. James need to retrieve some information about listing queues from this service in runtime.
Details about URI format is in <a class="externalLink" href="https://www.rabbitmq.com/management.html#usage-ui">RabbitMQ Management URI</a>
</dd>
<dt><b>management.user</b></dt>
<dd>username used to access management service</dd>
<dt><b>management.password</b></dt>
<dd>password used to access management service</dd>
<dt><b>connection.pool.retries</b></dt>
<dd>Configure retries count to retrieve a connection. Exponential backoff is performed between each retries.
Optional integer, defaults to 10</dd>
<dt><b>connection.pool.min.delay.ms</b></dt>
<dd>Configure initial duration (in ms) between two connection retries. Exponential backoff is performed between each retries.
Optional integer, defaults to 100</dd>
<dt><b>channel.pool.retries</b></dt>
<dd>Configure retries count to retrieve a channel. Exponential backoff is performed between each retries.
Optional integer, defaults to 3</dd>
<dt><b>channel.pool.min.delay.ms</b></dt>
<dd>Configure initial duration (in ms) between two channel retries. Exponential backoff is performed between each retries.
Optional integer, defaults to 50</dd>
<dt><b>channel.pool.size</b></dt>
<dd>Configure the size of the channel pool.
Optional integer, defaults to 3</dd>
<dt><b>ssl.enabled</b></dt>
<dd>Is using ssl enabled
Optional boolean, defaults to false</dd>
<dt><b>ssl.management.enabled</b></dt>
<dd>Is using ssl on management api enabled
Optional boolean, defaults to false</dd>
<dt><b>ssl.validation.strategy</b></dt>
<dd>Configure the validation strategy used for rabbitmq connections. Possible values are default, ignore and override.
Optional string, defaults to using systemwide ssl configuration</dd>
<dt><b>ssl.truststore</b></dt>
<dd>Points to the truststore (PKCS12) used for verifying rabbitmq connection. If configured then &quot;ssl.truststore.password&quot; must also be configured,
Optional string, defaults to systemwide truststore. &quot;ssl.validation.strategy: override&quot; must be configured if you want to use this</dd>
<dt><b>ssl.truststore.password</b></dt>
<dd>Configure the truststore password. If configured then &quot;ssl.truststore&quot; must also be configured,
Optional string, defaults to empty string. &quot;ssl.validation.strategy: override&quot; must be configured if you want to use this</dd>
<dt><b>ssl.hostname.verifier</b></dt>
<dd>Configure host name verification. Possible options are default and accept_any_hostname
Optional string, defaults to subject alternative name host verifier</dd>
<dt><b>ssl.keystore</b></dt>
<dd>Points to the keystore(PKCS12) used for client certificate authentication. If configured then &quot;ssl.keystore.password&quot; must also be configured,
Optional string, defaults to empty string</dd>
<dt><b>ssl.keystore.password</b></dt>
<dd>Configure the keystore password. If configured then &quot;ssl.keystore&quot; must also be configured,
Optional string, defaults to empty string</dd>
<dt><b>quorum.queues.enable</b></dt>
<dd>Boolean. Whether to activate Quorum queue usage for use cases that benefits from it (work queue).
Quorum queues enables high availability.
False (default value) results in the usage of classic queues.</dd>
<dt><b>quorum.queues.replication.factor</b></dt>
<dd> Strictly positive integer. The replication factor to use when creating quorum queues.</dd>
<dt><b>hosts</b></dt>
<dd>Optional, default to the host specified as part of the URI.
Allow creating cluster aware connections.
A coma separated list of hosts, example: hosts=ip1:5672,ip2:5672</dd>
</dl>
</section>
<section>
<h2><a name="RabbitMQ_MailQueue_Configuration"></a>RabbitMQ MailQueue Configuration</h2>
<p>
RabbitMQ MailQueue Configuration
</p>
<p>
James mail queue is a component acting like a queue where it can enqueue and dequeue mails.
Beside of the basic features, it also allows some extra operations like getting size, browsing all items in the mail queue...
One of the mailqueue implementation is using RabbitMQ.
As RabbitMQ doesn't offer enough features to implement efficiently all mailqueue operations,
this implementation relies on Cassandra.
</p>
<dl>
<dt><b>mailqueue.view.sliceWindow</b></dt>
<dd>
James divide the view into slices, each slice contains data for a given period, sliceWindow parameter controls this period.
This dividing of periods allows faster browsing of the mail queue. Tips for choosing sliceWindow are explained in
<a class="externalLink" href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties">rabbitmq.properties</a>
</dd>
<dt><b>mailqueue.view.bucketCount</b></dt>
<dd>
Mails in a mail queue are distributed across the underlying storage service.
BucketCount describes how to be distributing mails to fit with your James setup
Tips for choosing bucketCount are explained in
<a class="externalLink" href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties">rabbitmq.properties</a>
</dd>
<dt><b>mailqueue.view.updateBrowseStartPace</b></dt>
<dd>
To browse, James needs a starting point and to continuously update that point in runtime.
UpdateBrowseStartPace describes the probability to update the starting point.
Tips for choosing updateBrowseStartPace are explained in
<a class="externalLink" href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties">rabbitmq.properties</a>
</dd>
<dt><b>mailqueue.size.metricsEnabled</b></dt>
<dd>
By default, the metrics are disabled for the mail queue size.
As computing the size of the mail queue is currently implemented on top of browse operation and thus have a linear complexity,
sometimes it can get too big, making it impossible for the ES reporter to handle it correctly without crashing.
It can be useful then to disable it.
Tips for choosing metricsEnabled are explained in
<a class="externalLink" href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties">rabbitmq.properties</a>
</dd>
</dl>
</section>
<section>
<h2><a name="RabbitMQ_Tasks_Configuration"></a>RabbitMQ Tasks Configuration</h2>
<p>Tasks are WebAdmin triggered long running jobs. RabbitMQ is used to organise their execution in a work queue,
with an exclusive consumer.
</p>
<dl>
<dt><b>task.consumption.enabled</b></dt>
<dd>
Whether to enable task consumption on this node.
Disable with caution (this only makes sense in a distributed setup where other nodes consume tasks).
Defaults to true.
</dd>
</dl>
</section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>