使用 Servicestack 在 RabbitMQ 队列上设置 TTL
Setting TTL on RabbitMQ queue using Servicestack
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。
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。