2017-02-22 63 views
3

I have read可以在RabbitMQ(每個隊列)上設置生存時間(TTL),以便在TTL過期時由RabbitMQ服務器將消息從隊列中擦除,並且服務器將保證不會處理已過期TTL的消息。使用ServiceStack在RabbitMQ隊列上設置TTL

我正在使用service stack to connect to various rabbitMq's;特別是我使用它作爲rabbitMQ提供的RPC功能的外觀,並且它工作得很好。

當聲明隊列的TTL時,我無法找到任何信息(也查看代碼支持)。就我所見,隊列的創建被埋在了服務棧實現中 - 這抽象了大量的隊列細節,以提供簡化的服務抽象,而不管傳輸層如何。

是否有可能做到這一點(使用服務堆棧在兔子MQ上設置TTL) - 或者將來有可能做到這一點?

回答

3

我添加了一個過濾器,這將讓你自定義哪些選項兔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