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

标签 c# rabbitmq servicestack ttl

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

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

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

是否可以这样做(使用服务堆栈在 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# - 使用 Servicestack 在 RabbitMQ 队列上设置 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394939/

相关文章:

crash - 控制rabbitmq 'name'而不是 'sname'

ssl - 使用 SSL/TLS 的 RabbitMQ 普通身份验证

node.js - NoSQL 架构白皮书

c# - 服务堆栈: Difference between GetSession and SessionAs<t>

Servicestack Opentelemetry 集成

c# - 在 updatepanel 中滚动 div

C# 在 INSERT 查询中调用 ST_GeomfromText 函数

c# - Geolocation.CivicAddress.City 返回空的 win8 metro 应用程序

c# - ASP.NET Core Web API : how to assign value of null to a missing property in the request when parameter binding

servicestack - 如何在 ServiceStack 中使用 Dapper