RabbitMQ 设置消息的TTL(过期时间)
我们在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"); //自定义的RoutingKey var 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"); //自定义的RoutingKey var 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); }
}
参考信息:https://www.rabbitmq.com/ttl.html
RabbitMQ 设置消息的TTL(过期时间)的更多相关文章
- 【RabbitMQ 实战指南】一 过期时间TTL
RabbitMQ 可以对消息和队列设置过期时间(TTL) 1.设置消息的TTL 目前有两种方式可以设置消息的TTL 第一种方式是通过队列属性设置,队列中所有消息都有相同的过期时间 第二种方式是对消息本 ...
- ahjesus在asp.net中还可以通过设置HttpCookie对象的过期时间为DateTime.MinValue来指定此Cookies为跟随浏览器生效
ahjesus在asp.net中还可以通过设置HttpCookie对象的过期时间为DateTime.MinValue来指定此Cookies为跟随浏览器生效
- (转)网站速度优化技巧:Nginx设置js、css过期时间
网站速度优化技巧:Nginx设置js.css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for ...
- redis中获取没有设置ttl过期时间的key
需求:redis作为一个内存型的数据库,我们需要对过期key保持关注,从info keyspace中可以看出有多少key没有设置过期时间,那么到底是哪些呢? 说明:关于redis ttl 的返回值,请 ...
- 如何严格设置php中session过期时间
如何严格限制session在30分钟后过期! 1.设置客户端cookie的lifetime为30分钟: 2.设置session的最大存活周期也为30分钟: 3.为每个session值加入时间戳,然后在 ...
- RabbitMQ 设置消息的优先级
在RabbitMQ中,可以设置消息的优先级,也就相当于在队列中置顶某条消息,让某个消息优先得到处理的功能. 既然是设置消息的优先级,那么就是针对生产者,也就是消息发布端. 设置消息的优先级一共有2个步 ...
- 如何严格设置php中session过期时间 (转)
如何严格限制session在30分钟后过期!1.设置客户端cookie的lifetime为30分钟:2.设置session的最大存活周期也为30分钟:3.为每个session值加入时间戳,然后在程序调 ...
- PHP设置会话(Session)超时过期时间实现登录时间限制[转]
用户登录系统60分钟后如果没有操作就自动退出 第一种方法即设置php.ini配置文件,设置session.gc_maxlifetime和session.cookie_lifetime节点属性值,当然也 ...
- PHP设置会话(Session)超时过期时间实现登录时间限制
最近某个PHP项目用到了限制登录时间的功能,比如用户登录系统60分钟后如果没有操作就自动退出,我搜索了网络收集了有以下方法可供参考. 第一种方法即设置php.ini配置文件,设置session.gc_ ...
随机推荐
- 网络cmd命令
1.ping ip; 检测IP地址是否相通 ping命令的常用参数选项 ping IP -t:连续对IP地址执行ping命令,直到被用户以Ctrl+C中断. ping IP -l 2000:指定pin ...
- java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...
- [Win10]安装msi时2503,2502错误及其解决
简述 刚安装了win10系统,在安装TortoiseGit和TortoiseSvn时,这两个软件是.msi后缀的安装文件,在点击安装时老是提示2503,2502错误,因此无法安装上 搜索了下一般都提到 ...
- codeforces590a//Median Smoothing//Codeforces Round #327 (Div. 1)
题意:一个数组,一次操作为:除首尾不变,其它的=它与前后数字的中位数,这样对数组重复几次后数组会稳定不变.问要操作几次,及最后的稳定数组. 挺难的题,参考了别人的代码和思路.总的来说就是找01010, ...
- javascript 两张图片切换 三目运算符
<body> <script> function changeImage(){ var s = document.getElementById('myimage'); s.sr ...
- Dedecmsv5.7整合ueditor 图片上传添加水印
最近的项目是做dedecmsv5.7的二次开发,被要求上传的图片要加水印,百度ueditor编辑器不支持自动加水印,所以,找了很多资料整合记录一下,具体效果图 这里不仔细写dedecmsv5.7 整合 ...
- DVWA-CSRF
Low等级 image 抓包 image 正常跳转 image image 在这里我们把密码改为qwer image image image image image ...
- 【Java】【2】String和List相互转换
正文: 1,String转List //常见的为逗号分隔 String str = "a,b,c"; List<String> list1 = Arrays.asLis ...
- 借助python工具从word文件中抽取相关表的定义,最后组装建表语句-非常好
借助python工具从word文件中抽取表的定义,最后组装建表语句-非常好 --如有转载请以超链接的方式注明原文章出处,谢谢大家.请尊重每一位乐于分享的原创者 1.python脚本 ## -*- co ...
- web服务器-----Tomcat 7.0安装
下载地址:http://tomcat.apache.org/ 1.下载 2.解压缩---c盘 3.运行bin\startup.bat 启动Tomcat服务器 运行bin\shutdown.bat关闭T ...