【问题标题】:Setting TTL on RabbitMQ queue using Servicestack使用 Servicestack 在 RabbitMQ 队列上设置 TTL
【发布时间】:2017-02-22 14:56:47
【问题描述】:

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

我正在使用service stack to connect to various rabbitMq's;具体来说,我使用它作为rabbitMQ 提供的RPC 功能的一个外观,它确实工作得很好。

我找不到任何信息(并且还查看代码 - 支持)用于在声明队列时设置队列的 TTL。据我所知,队列的创建隐藏在服务堆栈实现中——它抽象了许多队列细节,以提供简化的服务抽象,而不管传输层如何。

是否可以这样做(使用服务堆栈在 rabbit MQ 上设置 TTL)- 或者将来可以这样做吗?

【问题讨论】:

    标签: c# rabbitmq servicestack ttl


    【解决方案1】:

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

    【讨论】:

    • 你是我的英雄。严重地!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多