diff --git a/Rebus.RabbitMq/Config/RabbitMqQueueOptionsBuilder.cs b/Rebus.RabbitMq/Config/RabbitMqQueueOptionsBuilder.cs index 8873daf..5ea250c 100644 --- a/Rebus.RabbitMq/Config/RabbitMqQueueOptionsBuilder.cs +++ b/Rebus.RabbitMq/Config/RabbitMqQueueOptionsBuilder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace Rebus.Config { @@ -26,10 +27,20 @@ public RabbitMqQueueOptionsBuilder SetExclusive(bool exclusive) } /// - /// Set auto delete + /// Set auto delete, when last consumer disconnects + /// Whether queue should be deleted + /// Time to live (in milliseconds) after last subscriber disconnects /// - public RabbitMqQueueOptionsBuilder SetAutoDelete(bool autoDelete) + public RabbitMqQueueOptionsBuilder SetAutoDelete(bool autoDelete, long ttlInMs = 0) { + if (ttlInMs < 0) + { + throw new ArgumentException("Time must be in milliseconds and greater than 0", nameof(ttlInMs)); + } + else + { + Arguments.Add("x-expires", ttlInMs); + } AutoDelete = autoDelete; return this; } @@ -46,7 +57,7 @@ public RabbitMqQueueOptionsBuilder SetArguments(Dictionary argum /// /// Add input queue arguments to the default settings /// - public RabbitMqQueueOptionsBuilder AddArgument(string key, string val) + public RabbitMqQueueOptionsBuilder AddArgument(string key, object val) { Arguments.Add(key, val); return this;