# RabbitMQ configuration

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

# Mandatory
uri=amqp://rabbitmq:5672
# If you use a vhost, specify it as well at the end of the URI
# uri=amqp://rabbitmq:5672/vhost

# Vhost to use for creating queues and exchanges
# Optional, only use this if you have invalid URIs containing characters like '_'
# vhost=vhost1

# Optional, default to the host specified as part of the URI.
# Allow creating cluster aware connections.
# hosts=ip1:5672,ip2: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 timeout duration (in ms) to obtain a rabbitmq channel. Defaults to 30 seconds.
# Optional integer, defaults to 30 seconds.
#channel.pool.max.delay.ms=30000
# Configure the size of the channel pool.
# Optional integer, defaults to 3
#channel.pool.size=3

# Boolean. Whether to activate Quorum queue usage for use cases that benefits from it (work queue).
# Quorum queues enables high availability.
# False (default value) results in the usage of classic queues.
#quorum.queues.enable=true

# Strictly positive integer. The replication factor to use when creating quorum queues.
#quorum.queues.replication.factor

# Parameters for the Cassandra administrative view

# Whether the Cassandra administrative view should be activated. Boolean value defaulting to true.
# Not necessarily needed for MDA deployments, mail queue management adds significant complexity.
# cassandra.view.enabled=true

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

# Configure task queue consumer timeout. References: https://www.rabbitmq.com/consumers.html#acknowledgement-timeout. Required at least RabbitMQ version 3.12 to have effect.
# This is used to avoid the task queue consumer (which could run very long tasks) being disconnected by RabbitMQ after the default acknowledgement timeout 30 minutes.
# Optional. Duration (support multiple time units cf `DurationParser`), defaults to 1 day.
#task.queue.consumer.timeout=1day

# Configure queue ttl (in ms). References: https://www.rabbitmq.com/ttl.html#queue-ttl.
# This is used only on queues used to share notification patterns, are exclusive to a node. If omitted, it will not add the TTL configure when declaring queues.
# Optional integer, defaults is 3600000.
#notification.queue.ttl=3600000
