注:以下程序使用C#实现
在我们使用RabbitMQ声明队列时,其中最后一个参数是arguments,那么arguments到底有什么用呢,下面我们解释其中参数的第一中用法:即
消息过期时间:Message-TTL
我们将最后一个参数arguments声明为:
new Dictionary<string,object>{
{"x-message-ttl",1000*5}//消息5秒中过期
}
//使用方法
chaNnel.QueueDeclare("mytest",false,false,false,new Dictionary<string,object>{
{"x-message-ttl",1000*5}//消息5秒中过期
});
channel.QueueBind("mytest",string.Empty,"",null);
- 如果将这个参数放到QueueDeclare的最后一个参数中,那么所有放到该队列中的消息,都会只存活5秒钟,消息发送5秒钟之后,该消息会被删除(可通过RabbitMQ管理界面实时查看)
- 上面是针对某个队列中的所有消息而言,那么如果我们想针对某条消息设置过期时间,可以通过再BasicPublish中指定参数,用法如下:
var properties=channel.CreateBasicProperties();
properties.Expiration=(1000*5).ToString();
channel.BasicPublish(string.Empty,"",properties,Encoding.UTF8.GetBytes("你好"));
那么"你好"这条消息就会在发出5秒中之后,自动删除,无论有没有被消费

本文详细介绍了在RabbitMQ中如何通过设置arguments参数来实现消息的过期时间,包括针对整个队列的消息过期配置,以及针对单条消息的过期时间设定。
14万+

被折叠的 条评论
为什么被折叠?



