c#-使用Servicestack在RabbitMQ队列上设置TTL

I have read,可以在RabbitMQ(每个队列)上设置生存时间(TTL),以便如果TTL过期,RabbitMQ服务器将从队列中清除消息,并且服务器将保证消息具有过期的TTL将不会被处理.

我正在使用service stack to connect to various rabbitMq’s;特别是我用它来充当RabbitMQ提供的RPC功能的基础,并且效果很好.

我无法找到任何信息(也正在查看代码-支持)来声明队列时设置队列的TTL.据我所知,队列的创建被埋在Service Stack实现中-该实现抽象了很多队列详细信息以提供简化的服务抽象,而与传输层无关.

是否有可能这样做(使用服务栈在Rabbit MQ上设置TTL)-还是将来有可能这样做?

解决方法:

我添加了一个过滤器,该过滤器可让您自定义创建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)获得.

上一篇:c#-OrmLite LocalDate到DateTime转换器未应用于SqlLite内存Db的子句


下一篇:提高模拟赛Day8T1求中位数