RabbitMQ Server Configuration

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.

Consult rabbitmq.properties in GIT to get some examples and hints.

RabbitMQ Configuration

the amqp URI pointing to RabbitMQ server. Details about amqp URI format is in RabbitMQ URI Specification
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 RabbitMQ Management URI
username used to access management service
password used to access management service

RabbitMQ MailQueue Configuration

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.

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 is explained in rabbitmq.properties
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 is explained in rabbitmq.properties
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 is explained in rabbitmq.properties