diff --git a/manifests/init.pp b/manifests/init.pp index daf9220..e9c7248 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -50,6 +50,24 @@ # option, you must wipe the RabbitMQ database. # Defaults to $facts['os_service_default'] # +# [*rabbit_quorum_queue*] +# (Optional) Use quorum queues in RabbitMQ. +# Defaults to $facts['os_service_default'] +# +# [*rabbit_quorum_delivery_limit*] +# (Optional) Each time a message is rdelivered to a consumer, a counter is +# incremented. Once the redelivery count exceeds the delivery limit +# the message gets dropped or dead-lettered. +# Defaults to $facts['os_service_default'] +# +# [*rabbit_quorum_max_memory_length*] +# (Optional) Limit the number of messages in the quorum queue. +# Defaults to $facts['os_service_default'] +# +# [*rabbit_quorum_max_memory_bytes*] +# (Optional) Limit the number of memory bytes used by the quorum queue. +# Defaults to $facts['os_service_default'] +# # [*rabbit_transient_queues_ttl*] # (Optional) Positive integer representing duration in seconds for # queue TTL (x-expires). Queues which are unused for the duration @@ -159,6 +177,10 @@ class watcher ( $rabbit_heartbeat_rate = $facts['os_service_default'], $rabbit_heartbeat_in_pthread = $facts['os_service_default'], $rabbit_ha_queues = $facts['os_service_default'], + $rabbit_quorum_queue = $facts['os_service_default'], + $rabbit_quorum_delivery_limit = $facts['os_service_default'], + $rabbit_quorum_max_memory_length = $facts['os_service_default'], + $rabbit_quorum_max_memory_bytes = $facts['os_service_default'], $rabbit_transient_queues_ttl = $facts['os_service_default'], $rabbit_heartbeat_timeout_threshold = $facts['os_service_default'], $kombu_ssl_ca_certs = $facts['os_service_default'], @@ -211,6 +233,10 @@ class watcher ( rabbit_retry_backoff => $rabbit_retry_backoff, rabbit_interval_max => $rabbit_interval_max, rabbit_ha_queues => $rabbit_ha_queues, + rabbit_quorum_queue => $rabbit_quorum_queue, + rabbit_quorum_delivery_limit => $rabbit_quorum_delivery_limit, + rabbit_quorum_max_memory_length => $rabbit_quorum_max_memory_length, + rabbit_quorum_max_memory_bytes => $rabbit_quorum_max_memory_bytes, rabbit_transient_queues_ttl => $rabbit_transient_queues_ttl, heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold, heartbeat_rate => $rabbit_heartbeat_rate, diff --git a/releasenotes/notes/rabbit-quorum-queue-a05e425a7e25a686.yaml b/releasenotes/notes/rabbit-quorum-queue-a05e425a7e25a686.yaml new file mode 100644 index 0000000..9c55c8e --- /dev/null +++ b/releasenotes/notes/rabbit-quorum-queue-a05e425a7e25a686.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The ``watcher`` class now supports options for quorum queues in RabbitMQ. diff --git a/spec/classes/watcher_init_spec.rb b/spec/classes/watcher_init_spec.rb index cc7e57e..5a81763 100644 --- a/spec/classes/watcher_init_spec.rb +++ b/spec/classes/watcher_init_spec.rb @@ -33,20 +33,24 @@ describe 'watcher' do :control_exchange => '' ) is_expected.to contain_oslo__messaging__rabbit('watcher_config').with( - :rabbit_use_ssl => '', - :heartbeat_timeout_threshold => '', - :heartbeat_rate => '', - :heartbeat_in_pthread => '', - :kombu_reconnect_delay => '', - :kombu_failover_strategy => '', - :amqp_durable_queues => '', - :kombu_compression => '', - :kombu_ssl_ca_certs => '', - :kombu_ssl_certfile => '', - :kombu_ssl_keyfile => '', - :kombu_ssl_version => '', - :rabbit_ha_queues => '', - :rabbit_retry_interval => '', + :rabbit_use_ssl => '', + :heartbeat_timeout_threshold => '', + :heartbeat_rate => '', + :heartbeat_in_pthread => '', + :kombu_reconnect_delay => '', + :kombu_failover_strategy => '', + :amqp_durable_queues => '', + :kombu_compression => '', + :kombu_ssl_ca_certs => '', + :kombu_ssl_certfile => '', + :kombu_ssl_keyfile => '', + :kombu_ssl_version => '', + :rabbit_ha_queues => '', + :rabbit_quorum_queue => '', + :rabbit_quorum_delivery_limit => '', + :rabbit_quorum_max_memory_length => '', + :rabbit_quorum_max_memory_bytes => '', + :rabbit_retry_interval => '', ) is_expected.to contain_oslo__messaging__notifications('watcher_config').with( :transport_url => '', @@ -70,6 +74,10 @@ describe 'watcher' do :rpc_response_timeout => '120', :control_exchange => 'watcher', :rabbit_ha_queues => 'true', + :rabbit_quorum_queue => true, + :rabbit_quorum_delivery_limit => 3, + :rabbit_quorum_max_memory_length => 5, + :rabbit_quorum_max_memory_bytes => 1073741824, :rabbit_heartbeat_timeout_threshold => '60', :rabbit_heartbeat_rate => '10', :rabbit_heartbeat_in_pthread => true, @@ -89,20 +97,24 @@ describe 'watcher' do :control_exchange => 'watcher' ) is_expected.to contain_oslo__messaging__rabbit('watcher_config').with( - :rabbit_use_ssl => '', - :heartbeat_timeout_threshold => '60', - :heartbeat_rate => '10', - :heartbeat_in_pthread => true, - :kombu_reconnect_delay => '5.0', - :kombu_failover_strategy => 'shuffle', - :amqp_durable_queues => true, - :kombu_compression => 'gzip', - :kombu_ssl_ca_certs => '', - :kombu_ssl_certfile => '', - :kombu_ssl_keyfile => '', - :kombu_ssl_version => '', - :rabbit_ha_queues => true, - :rabbit_retry_interval => '', + :rabbit_use_ssl => '', + :heartbeat_timeout_threshold => '60', + :heartbeat_rate => '10', + :heartbeat_in_pthread => true, + :kombu_reconnect_delay => '5.0', + :kombu_failover_strategy => 'shuffle', + :amqp_durable_queues => true, + :kombu_compression => 'gzip', + :kombu_ssl_ca_certs => '', + :kombu_ssl_certfile => '', + :kombu_ssl_keyfile => '', + :kombu_ssl_version => '', + :rabbit_ha_queues => true, + :rabbit_quorum_queue => true, + :rabbit_quorum_delivery_limit => 3, + :rabbit_quorum_max_memory_length => 5, + :rabbit_quorum_max_memory_bytes => 1073741824, + :rabbit_retry_interval => '', ) is_expected.to contain_oslo__messaging__notifications('watcher_config').with( :transport_url => 'rabbit://rabbit_user:password@localhost:5673',