| <?xml version="1.0"?> |
| <!-- |
| 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. |
| --> |
| <document> |
| |
| <properties> |
| <title>Apache James Server 3 - RabbitMQ Configuration</title> |
| </properties> |
| |
| <body> |
| |
| <section name="RabbitMQ Server Configuration"> |
| <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 href="https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties">rabbitmq.properties</a> |
| in GIT to get some examples and hints. |
| </p> |
| |
| <p> |
| RabbitMQ Configuration |
| </p> |
| <dl> |
| <dt><strong>uri</strong></dt> |
| <dd> |
| the amqp URI pointing to RabbitMQ server. Details about amqp URI format is in <a href="https://www.rabbitmq.com/uri-spec.html">RabbitMQ URI Specification</a> |
| </dd> |
| |
| <dt><strong>management.uri</strong></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 href="https://www.rabbitmq.com/management.html#usage-ui">RabbitMQ Management URI</a> |
| </dd> |
| |
| <dt><strong>management.user</strong></dt> |
| <dd>username used to access management service</dd> |
| |
| <dt><strong>management.password</strong></dt> |
| <dd>password used to access management service</dd> |
| |
| <dt><strong>connection.pool.retries</strong></dt> |
| <dd>Configure retries count to retrieve a connection. Exponential backoff is performed between each retries. |
| Optional integer, defaults to 10</dd> |
| |
| <dt><strong>connection.pool.min.delay.ms</strong></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><strong>channel.pool.retries</strong></dt> |
| <dd>Configure retries count to retrieve a channel. Exponential backoff is performed between each retries. |
| Optional integer, defaults to 3</dd> |
| |
| <dt><strong>channel.pool.min.delay.ms</strong></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><strong>channel.pool.size</strong></dt> |
| <dd>Configure the size of the channel pool. |
| Optional integer, defaults to 3</dd> |
| </dl> |
| </section> |
| |
| <section name="RabbitMQ MailQueue Configuration"> |
| <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><strong>mailqueue.view.sliceWindow</strong></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 href="https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties">rabbitmq.properties</a> |
| </dd> |
| |
| <dt><strong>mailqueue.view.bucketCount</strong></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 href="https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties">rabbitmq.properties</a> |
| </dd> |
| |
| <dt><strong>mailqueue.view.updateBrowseStartPace</strong></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 href="https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties">rabbitmq.properties</a> |
| </dd> |
| |
| <dt><strong>mailqueue.size.metricsEnabled</strong></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 href="https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties">rabbitmq.properties</a> |
| </dd> |
| </dl> |
| </section> |
| |
| <section name="RabbitMQ Tasks Configuration"> |
| <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><strong>task.consumption.enabled</strong></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> |
| |
| </body> |
| |
| </document> |