<?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-11-12 -->
<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="20211112" />
    <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-11-12</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>
