# RabbitMQ configuration

# Read https://james.apache.org/server/config-rabbitmq.html for further details

# Mandatory
uri=amqp://rabbitmq:5672

# RabbitMQ Administration Management
# Mandatory
management.uri=http://rabbitmq:15672
# Mandatory
management.user=guest
# Mandatory
management.password=guest

# Configure retries count to retrieve a connection. Exponential backoff is performed between each retries.
# Optional integer, defaults to 10
#connection.pool.retries=10
# Configure initial duration (in ms) between two connection retries. Exponential backoff is performed between each retries.
# Optional integer, defaults to 100
#connection.pool.min.delay.ms=100
# Configure retries count to retrieve a channel. Exponential backoff is performed between each retries.
# Optional integer, defaults to 3
#channel.pool.retries=3
# Configure initial duration (in ms) between two channel retries. Exponential backoff is performed between each retries.
# Optional integer, defaults to 50
#channel.pool.min.delay.ms=50
# Configure the size of the channel pool.
# Optional integer, defaults to 3
#channel.pool.size=3

# Parameters for the Cassandra administrative view

# Period of the window. Too large values will lead to wide rows while too little values might lead to many queries.
# Use the number of mail per Cassandra row, along with your expected traffic, to determine this value
# This value can only be decreased to a value dividing the current value
# Optional, default 1h
mailqueue.view.sliceWindow=1h

# Use to distribute the emails of a given slice within your cassandra cluster
# A good value is 2*cassandraNodeCount
# This parameter can only be increased.
# Optional, default 1
mailqueue.view.bucketCount=1

# Determine the probability to update the browse start pointer
# Too little value will lead to unnecessary reads. Too big value will lead to more expensive browse.
# Choose this parameter so that it get's update one time every one-two sliceWindow
# Optional, default 1000
mailqueue.view.updateBrowseStartPace=1000

# Enables or disables the gauge metric on the mail queue size
# Computing the size of the mail queue is currently implemented on top of browse operation and thus have a linear complexity
# Metrics get exported periodically as configured in elasticsearch.properties, thus getSize is also called periodically
# Choose to disable it when the mail queue size is getting too big
# Note that this is as well a temporary workaround until we get 'getSize' method better optimized
# Optional, default false
mailqueue.size.metricsEnabled=false

# Whether to enable task consumption on this node. Tasks are WebAdmin triggered long running jobs.
# Disable with caution (this only makes sense in a distributed setup where other nodes consume tasks).
# Defaults to true.
task.consumption.enabled=true
