编程语言
首页 > 编程语言> > c#-使用Servicestack在RabbitMQ队列上设置TTL

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)获得.

标签:rabbitmq,ttl,servicestack,c
来源: https://codeday.me/bug/20191111/2021590.html