当前位置: 代码迷 >> 综合 >> RabbitMQ 中arguments详解(系列一之Message TTL)
  详细解决方案

RabbitMQ 中arguments详解(系列一之Message TTL)

热度:7   发布时间:2024-02-13 18:38:38.0

注:以下程序使用C#实现

在我们使用RabbitMQ声明队列时,其中最后一个参数是arguments,那么arguments到底有什么用呢,下面我们解释其中参数的第一中用法:即

消息过期时间:Message-TTL

我们将最后一个参数arguments声明为:

new Dictionary<string,object>{
{"x-message-ttl",1000*5}//消息5秒中过期
}//使用方法
chanel.QueueDeclare("mytest",false,false,false,new Dictionary<string,object>{
{"x-message-ttl",1000*5}//消息5秒中过期
});
  1. 如果将这个参数放到QueueDeclare的最后一个参数中,那么所有放到该队列中的消息,都会只存活5秒钟,消息发送5秒钟之后,该消息会被删除(可通过RabbitMQ管理界面实时查看)
  2. 上面是针对某个队列中的所有消息而言,那么如果我们想针对某条消息设置过期时间,可以通过再BasicPublish中指定参数,用法如下:
var properties=channel.CreateBasicProperties();
properties.Expiration=(1000*5).ToString();
channel.BasicPublish(string.Empty,"test",properties,Encoding.UTF8.GetBytes("你好"));

那么"你好"这条消息就会在发出5秒中之后,自动删除,无论有没有被消费

  相关解决方案