注:以下程序使用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秒中之后,自动删除,无论有没有被消费