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