2017-02-22 22 views
3

I have read, что можно установить время для жизни (TTL) на RabbitMQ (в очереди), чтобы сообщение было стерто из очереди сервером RabbitMQ, если истекает время TTL, и что сервер будет гарантировать, что сообщения, которые имеют истекший TTL, не будут обработаны.Установка TTL на очередь RabbitMQ с использованием Servicestack

Я использую service stack to connect to various rabbitMq's; в частности, я использую его для того, чтобы выступать в качестве фасада по функциям RPC, предлагаемым rabbitMQ, и он работает очень хорошо.

Я не могу найти какую-либо информацию (а также посмотреть на поддержку кода) для установки TTL очереди при ее объявлении. Насколько я вижу, создание очереди похоронено в реализации Service Stack, которая абстрагирует большую часть деталей очереди, чтобы обеспечить упрощенную абстракцию сервиса независимо от транспортного уровня.

Возможно ли это сделать (установить TTL на кролике MQ с использованием стека служб) - или это будет возможно сделать в будущем?

ответ

3

Я добавил фильтр, который позволит вам настроить то, что получить созданы опции Rabbit MQ очереди в и темы, с помощью которых можно указать, с новым CreateQueueFilter, например:

container.Register<IMessageService>(c => 
    new RabbitMqServer(ConnectionString) 
    { 
     CreateQueueFilter = (queueName, args) => 
     { 
      if (queueName == QueueNames<MyRequest>.In) 
      { 
       args["x-message-ttl"] = 60000; 
      } 
     } 
    }); 

Это изменение доступно с v4. 5.7+, то есть available on MyGet.

+2

Ты мой герой. Шутки в сторону! Благодаря! – Jay