= Distributed James Server &mdash; rabbitmq.properties
:navtitle: rabbitmq.properties

This configuration helps you configure components using RabbitMQ.

Consult this link:https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties[example]
to get some examples and hints.

== RabbitMQ Configuration

.rabbitmq.properties content
|===
| Property name | explanation

| uri
| the amqp URI pointing to RabbitMQ server. Details about amqp URI format is in https://www.rabbitmq.com/uri-spec.html[RabbitMQ URI Specification]

| management.uri
| 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 https://www.rabbitmq.com/management.html#usage-ui[RabbitMQ Management URI]

| management.user
| username used to access management service

| management.password
| password used to access management service

| connection.pool.retries
| Configure retries count to retrieve a connection. Exponential backoff is performed between each retries.
Optional integer, defaults to 10

| connection.pool.min.delay.ms
| Configure initial duration (in ms) between two connection retries. Exponential backoff is performed between each retries.
Optional integer, defaults to 100

| channel.pool.retries
| Configure retries count to retrieve a channel. Exponential backoff is performed between each retries.
Optional integer, defaults to 3

| channel.pool.min.delay.ms
| Configure initial duration (in ms) between two channel retries. Exponential backoff is performed between each retries.
Optional integer, defaults to 50

| channel.pool.size
| Configure the size of the channel pool.
Optional integer, defaults to 3

| ssl.enabled
| Is using ssl enabled
Optional boolean, defaults to false

| ssl.management.enabled
| Is using ssl on management api enabled
Optional boolean, defaults to false

| ssl.validation.strategy
| Configure the validation strategy used for rabbitmq connections. Possible values are default, ignore and override.
Optional string, defaults to using systemwide ssl configuration

| ssl.truststore
| Points to the truststore (PKCS12) used for verifying rabbitmq connection. If configured then "ssl.truststore.password" must also be configured,
Optional string, defaults to systemwide truststore. "ssl.validation.strategy: override" must be configured if you want to use this

| ssl.truststore.password
| Configure the truststore password. If configured then "ssl.truststore" must also be configured,
Optional string, defaults to empty string. "ssl.validation.strategy: override" must be configured if you want to use this

| ssl.hostname.verifier
| Configure host name verification. Possible options are default and accept_any_hostname
Optional string, defaults to subject alternative name host verifier

| ssl.keystore
| Points to the keystore(PKCS12) used for client certificate authentication. If configured then "ssl.keystore.password" must also be configured,
Optional string, defaults to empty string

| ssl.keystore.password
| Configure the keystore password. If configured then "ssl.keystore" must also be configured,
Optional string, defaults to empty string
|===

== RabbitMQ MailQueue Configuration

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.

.rabbitmq.properties content
|===
| Property name | explanation

| mailqueue.view.sliceWindow
| James divides 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
https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties[rabbitmq.properties]

| mailqueue.view.bucketCount
| 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
https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties[rabbitmq.properties]

| mailqueue.view.updateBrowseStartPace
| 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
https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties[rabbitmq.properties]

| mailqueue.size.metricsEnabled
|  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 has 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
https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties[rabbitmq.properties]

|===

== RabbitMQ Tasks Configuration

Tasks are WebAdmin triggered long running jobs. RabbitMQ is used to organise their execution in a work queue,
with an exclusive consumer.

.rabbitmq.properties content
|===
| Property name | explanation

| task.consumption.enabled
| 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.

|===