我们在RabbitMQ中发布消息时,在代码中有两种方法设置某个队列的消息过期时间:

1、针对队列来说,可以使用x-message-ttl参数设置当前队列中所有消息的过期时间,即当前队列中所有的消息过期时间都一样;

2、针对单个消息来说,在发布消息时,可以使用Expiration参数来设置单个消息的过期时间。

以上两个参数的单位都是毫秒,即1000毫秒为1秒。如果以上两个都设置,则以当前消息最短的那个过期时间为准。

接下来让我们在在代码中相见!

针对队列来说:

//首先创建一个连接工厂对象
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "yyt", Password = "yyt888888",VirtualHost="log" };
//然后使用工厂对象创建一个TCP连接
using (var connection = factory.CreateConnection()){//在当前连接上创建一根通信的虚拟管道using (var channel = connection.CreateModel()) {      //声明一个交换机channel.ExchangeDeclare("e.log", "direct");//声明一个队列,设置arguments的参数x-message-ttl为10000毫秒channel.QueueDeclare(queue: "q.log.error",durable: false,exclusive: false,autoDelete: false,arguments: new Dictionary<string, object> {                                       { "x-message-ttl",10000} //x-message-ttl即设置当前队列消息的过期时间。ttl即为time to live}); channel.QueueBind("q.log.error", //队列名称"e.log",      //交换机名称"log.error");  //自定义的RoutingKeyvar body = Encoding.UTF8.GetBytes("测试消息");var properties = channel.CreateBasicProperties();//设置消息持久化properties.SetPersistent(true);//发布消息channel.BasicPublish(exchange: "e.log",routingKey: "log.error",basicProperties: properties,body: body);}
}

针对的单个消息来说:

//首先创建一个连接工厂对象
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "yyt", Password = "yyt888888",VirtualHost="log" };
//然后使用工厂对象创建一个TCP连接
using (var connection = factory.CreateConnection()){//在当前连接上创建一根通信的虚拟管道using (var channel = connection.CreateModel()) {      //声明一个交换机channel.ExchangeDeclare("e.log", "direct");//声明一个队列,设置arguments的参数x-message-ttl为10000毫秒channel.QueueDeclare(queue: "q.log.error",durable: false,exclusive: false,autoDelete: false,arguments: new Dictionary<string, object> {                                       //{ "x-message-ttl",10000} //x-message-ttl即设置当前队列消息的过期时间。ttl即为time to live}); channel.QueueBind("q.log.error", //队列名称"e.log",      //交换机名称"log.error");  //自定义的RoutingKeyvar body = Encoding.UTF8.GetBytes("测试消息");var properties = channel.CreateBasicProperties();//设置消息持久化properties.SetPersistent(true);//设置当个消息的过期时间为5000毫秒properties.Expiration = "5000";channel.BasicPublish(exchange: "e.log",routingKey: "log.error",basicProperties: properties,body: body);}
}

RabbitMQ 设置消息的TTL(过期时间)相关推荐

  1. Redis中字符串string数据类型(保存(设置键值、过期时间、设置多个键值、追加值)、获取(获取单一键值、获取多个键值))

    字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的V ...

  2. Java 设置PDF文档过期时间(有效时间)

    有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...

  3. php网站源码 设置有效时间,精确设置php中session过期时间的方法

    session过期时间在大多数据情况下我们是设置默认的时间,如果我们有一些特殊的要求可以设置一下session过期时间了,下面我整理了在使用session中一些问题与解决方法,希望例子对各位会有帮助. ...

  4. Keytool命令详解(好文章!详细设置一些参数比如过期时间等)

    以前用过几次这个东东,但每次都重新查询一次.本文原始出处是这里 . ----------------------------------------------------------- Keytoo ...

  5. Rabbitmq消息过期时间设置

    消息的过期时间 目前有两种方法可以设置消息的 TTL .第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间.第二种方法是对消息本身进行单独设置,每条消息的TTL可以不同.如果两种方法一起使 ...

  6. RabbitMq(十) 消息过期时间TTL介绍以及代码实现

    概述: 在rabbitmq中我们可以给消息设定过期时间LLT(Time to Live),在消息发送后过期时间段内未被消费,则系统会将其删除,被删除的消息将会进入死信队列.关于设置消息的过期时间有两种 ...

  7. RabbitMQ学习笔记:高级特性TTL(过期时间)

    TTL,Time To Live的简称,即消息过期时间,可以对消息和队列设置TTL. 目前有两种方式可以设置消息的TTL.第一种是通过队列的属性设置,队列中的所有消息都有相同的过期时间.第二种方法是对 ...

  8. RabbitMQ,Springboot整合RabbitMQ实现 消息可靠性投递,Consumer ACK,TTL,死信队列,使用TTL+死信队列=延迟队列

    搭建SpringBoot项目,用于演示 springboot版本 <!-- spring boot --><dependency><groupId>org.spri ...

  9. Redis 笔记(09)— 过期时间 expire(设置、查询、取消过期时间)

    1. 设置过期时间 Redis 使用 expire 命令设置一个键的过期时间,到时间后 Redis 会自动删除它.expire 命令的使用方法为 expire key seconds 其中 secon ...

最新文章

  1. 【Qt】解决在linux上使用Qt的媒体模块(Qt += multimedia)缺少模块multimedia的问题
  2. 众人皆醉我独醒——深入理解“特征值”和“特征向量”
  3. pytorch tensorboard
  4. Fabric--启动网络自动
  5. POJ 1185 炮兵阵地(状压DP)题解
  6. 线程安全-常用的模式
  7. 小说阅读网站设计HTML,40多个漂亮的网页表单设计实例
  8. 树莓派智能家居-语音聊天机器人实现
  9. proxytable代理不生效_深圳劳动纠纷律师为你解答劳动合同没有盖章是否生效
  10. 唐宇迪学习笔记19:聚类算法——Kmeans
  11. 如何快速的开发一个完整的iOS直播app
  12. 凯利公式计算器安卓_华为MatePad Pro 5G评测:一屏双任务打破安卓平板生态限制...
  13. fgo服务器维护2018.123,FGO9月30日更新维护公告
  14. 数据分析师说坐飞机安全么
  15. Accuracy和Precision的区别
  16. Qt编写输入法V2019终极版
  17. 【修真院JAVA小课堂】redis缓存集群简单介绍
  18. Linux系统接口ioc,Linux下SCSI API研究及应用
  19. 【MSSQL】SQL SERVER导入中文乱码问题解决
  20. 【渝粤教育】 国家开放大学2020年春季 2585城市轨道交通概论 参考试题

热门文章

  1. 安装opencv3.4遇到Download: opencv_ffmpeg.dll、ippicv等失败的解决方法
  2. 重磅!Meta AI开源OPT-175B:1750亿参数大模型
  3. C语言 =(按位与后赋值)^=(按位异或后赋值) |=(按位或后赋值)
  4. 利用JavaFX实现风险中性下股票价格的二叉树模型
  5. python文本保存
  6. 二层三层网络协议-网关
  7. 手机通过USB 利用电脑网络上网
  8. 【数据库数据恢复】linux操作系统下MYSQL数据库恢复案例
  9. 配置zsh的prompt
  10. matlab upcoef,Matlab小波工具箱的使用2