2017-02-22 34 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