= 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 default

| 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 default

| 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.

|===