From dae2cbca30663b03c4c1994f26f3a0a3c0f2dcf8 Mon Sep 17 00:00:00 2001 From: Matt Crees <mattc@stackhpc.com> Date: Wed, 1 Feb 2023 17:01:03 +0000 Subject: [PATCH] Add flags for RabbitMQ message TTL & queue expiry Adds two new flags to alter behaviour in RabbitMQ: * `rabbitmq_message_ttl_ms`, which lets you set a TTL on messages. * `rabbitmq_queue_expiry_ms`, which lets you set an expiry time on queues. See https://www.rabbitmq.com/ttl.html for more information on both. Change-Id: I51ca37ffbb1bb5c07f2d39873f0f33ca20263f2a --- ansible/roles/rabbitmq/defaults/main.yml | 4 ++++ ansible/roles/rabbitmq/templates/definitions.json.j2 | 4 ++-- ...-for-message-ttl-and-queue-expiry-c163a370708f5b20.yaml | 7 +++++++ tools/validate-all-file.py | 3 +++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/rabbitmq-add-flags-for-message-ttl-and-queue-expiry-c163a370708f5b20.yaml diff --git a/ansible/roles/rabbitmq/defaults/main.yml b/ansible/roles/rabbitmq/defaults/main.yml index 4c059eadb..46d907bf5 100644 --- a/ansible/roles/rabbitmq/defaults/main.yml +++ b/ansible/roles/rabbitmq/defaults/main.yml @@ -99,6 +99,10 @@ rabbitmq_ha_promote_on_shutdown: # "ha-mode":"exactly","ha-params":{{ rabbitmq_ha_replica_count | int }} rabbitmq_server_count: "{{ groups[role_rabbitmq_groups] | length }}" rabbitmq_ha_replica_count: "{{ (rabbitmq_server_count | int // 2 + 1) }}" +# If no TTL is specified, messages will not expire +rabbitmq_message_ttl_ms: +# If no queue expiry is specified, queues will not expire +rabbitmq_queue_expiry_ms: rabbitmq_extra_config: {} #################### diff --git a/ansible/roles/rabbitmq/templates/definitions.json.j2 b/ansible/roles/rabbitmq/templates/definitions.json.j2 index 4bf42d948..1a7205de7 100644 --- a/ansible/roles/rabbitmq/templates/definitions.json.j2 +++ b/ansible/roles/rabbitmq/templates/definitions.json.j2 @@ -18,8 +18,8 @@ ], {% if om_enable_rabbitmq_high_availability | bool %} "policies":[ - {"vhost": "/", "name": "ha-all", "pattern": "^(?!(amq\\.)|(.*_fanout_)|(reply_)).*", "apply-to": "all", "definition": {"ha-mode":{% if rabbitmq_ha_replica_count is not none %}"exactly","ha-params":{{ rabbitmq_ha_replica_count | int }}{% else %}"all"{% endif %}{% if rabbitmq_ha_promote_on_shutdown is not none %},"ha-promote-on-shutdown":"{{ rabbitmq_ha_promote_on_shutdown }}"{% endif %}}, "priority":0}{% if project_name == 'outward_rabbitmq' %}, - {"vhost": "{{ murano_agent_rabbitmq_vhost }}", "name": "ha-all", "pattern": "^(?!(amq\\.)|(.*_fanout_)|(reply_)).*", "apply-to": "all", "definition": {"ha-mode":{% if rabbitmq_ha_replica_count is not none %}"exactly","ha-params":{{ rabbitmq_ha_replica_count | int }}{% else %}"all"{% endif %}{% if rabbitmq_ha_promote_on_shutdown is not none %},"ha-promote-on-shutdown":"{{ rabbitmq_ha_promote_on_shutdown }}"{% endif %}}, "priority":0} + {"vhost": "/", "name": "ha-all", "pattern": "^(?!(amq\\.)|(.*_fanout_)|(reply_)).*", "apply-to": "all", "definition": {"ha-mode":{% if rabbitmq_ha_replica_count is not none %}"exactly","ha-params":{{ rabbitmq_ha_replica_count | int }}{% else %}"all"{% endif %}{% if rabbitmq_ha_promote_on_shutdown is not none %},"ha-promote-on-shutdown":"{{ rabbitmq_ha_promote_on_shutdown }}"{% endif %}{% if rabbitmq_message_ttl_ms is not none %},"message-ttl":{{ rabbitmq_message_ttl_ms | int }}{% endif %}{% if rabbitmq_queue_expiry_ms is not none %},"expires":{{ rabbitmq_queue_expiry_ms }}{% endif %}}, "priority":0}{% if project_name == 'outward_rabbitmq' %}, + {"vhost": "{{ murano_agent_rabbitmq_vhost }}", "name": "ha-all", "pattern": "^(?!(amq\\.)|(.*_fanout_)|(reply_)).*", "apply-to": "all", "definition": {"ha-mode":{% if rabbitmq_ha_replica_count is not none %}"exactly","ha-params":{{ rabbitmq_ha_replica_count | int }}{% else %}"all"{% endif %}{% if rabbitmq_ha_promote_on_shutdown is not none %},"ha-promote-on-shutdown":"{{ rabbitmq_ha_promote_on_shutdown }}"{% endif %}{% if rabbitmq_message_ttl_ms is not none %},"message-ttl":{{ rabbitmq_message_ttl_ms | int }}{% endif %}{% if rabbitmq_queue_expiry_ms is not none %},"expires":{{ rabbitmq_queue_expiry_ms }}{% endif %}}, "priority":0} {% endif %} ] {% else %} diff --git a/releasenotes/notes/rabbitmq-add-flags-for-message-ttl-and-queue-expiry-c163a370708f5b20.yaml b/releasenotes/notes/rabbitmq-add-flags-for-message-ttl-and-queue-expiry-c163a370708f5b20.yaml new file mode 100644 index 000000000..81947616b --- /dev/null +++ b/releasenotes/notes/rabbitmq-add-flags-for-message-ttl-and-queue-expiry-c163a370708f5b20.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Added two new flags to alter behaviour in RabbitMQ: + * `rabbitmq_message_ttl_ms`, which lets you set a TTL on messages. + * `rabbitmq_queue_expiry_ms`, which lets you set an expiry time on queues. + See https://www.rabbitmq.com/ttl.html for more information on both. diff --git a/tools/validate-all-file.py b/tools/validate-all-file.py index 763020e52..777c47b09 100755 --- a/tools/validate-all-file.py +++ b/tools/validate-all-file.py @@ -128,6 +128,9 @@ def check_json_j2(): 'kolla_internal_fqdn': '', 'octavia_provider_drivers': '', 'rabbitmq_ha_replica_count': 2, + 'rabbitmq_message_ttl_ms': 600000, + 'rabbitmq_queue_expiry_ms': 3600000, + } data = template.render(**context) json.loads(data) -- GitLab