RabbitMQ设置TTL生存时间

RabbitMQ的TTL+死信队列 看完这篇包会!!! RabbitMQ的TTL消息 TTL: TTL是:Time To Live的缩写 , 也就是生存时间 RabbitMQ支持消息的过期时间,在消息发送时可以进行指定 RabbitMQ支持为每个队列设置消息的超时时间,从消息入队列开始计算只要超过了队列的超时时间的配置,那么雄安锡会自动的清除 ... 阅读详情
public static void main(String[] args) throws IOException, TimeoutException {
    ConnectionFactory factory = new ConnectionFactory();
    {
        factory.setHost("49.232.202.201");
        factory.setUsername("gosuncn");
        factory.setPassword("123456");
        factory.setVirtualHost("/gosuncn");
    }
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    Map<String, Object> arguments = new HashMap<>();
    arguments.put("x-message-ttl", 10000);//设置过期时间10秒
    channel.queueDeclare(QUEUE_NAME, false, false, false, arguments);
    channel.basicPublish("", ROUTE_KEY, true, null, MESSAGE.getBytes());
    System.out.println("message delivery [" + MESSAGE + "]");
}

通过设置队列属性的方式来设置TTL,也就是说队列中所有的消息都是有相同的TTL属性。

也可以通过设置单条消息的方式设置:

public static void main(String[] args) throws IOException, TimeoutException {
    ConnectionFactory factory = new ConnectionFactory();
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
    builder.deliveryMode(2);
    builder.expiration("6000");
    AMQP.BasicProperties properties = builder.build();
    channel.basicPublish("", ROUTE_KEY, true, properties, MESSAGE.getBytes());
    System.out.println("message delivery [" + MESSAGE + "]");
}

设置队列属性:一旦消息过期,就会从队列中抹去。

设置消息属性:即使消息过期,也不会马上从队列中抹去,因为每条消息是否过期时在即将投递到消费者之前判定的。

解析:因为第一种方法里,队列中已过期的消息肯定在队列头部,RabbitMQ只要定期从队头开始扫描是否有过期消息即可,而第二种方法里,每条消息的过期时间不同,如果要删除所有过期消息,势必要扫描整个队列,所以不如等到此消息即将被消费时再判定是否过期,如果过期,再进行删除。

  • Queue TTL

queue.declare 命令中的 x-expires 参数控制 queue 被自动删除前可以处于未使用状态的时间。

用于表示超期时间的 x-expires 参数值以微秒为单位,并且服从和 x-message-ttl 一样的约束条件,且不能设置为 0 。

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-expires", 1800000);
channel.queueDeclare("order", false, false, false, args);
ADAS系统架构与核心功能解析:从感知到执行的智能驾驶方案 高级驾驶员辅助系统(ADAS)是现代汽车智能化的核心技术,其本质是通过传感器融合、算法决策与车辆控制,构建一个“感知-决策-执行”的闭环系统。在技术原理上,ADAS依赖摄像头、毫米波雷达、激光雷达等多源传感器进行环境感知,并通过深度学习模型与融合算法(如卡尔曼滤波)构建精准的环境模型。其技术价值在于提供主动安全冗余与驾驶舒适性,核心应用场景包括自动紧急制动(AEB)、自适应巡航(ACC)及车道保持辅助(LKA)等。随着传感器成本下降与域控制器算力提升,ADAS正从高端配置向主流车型快速普及,并逐步向高阶导航 阅读详情

相关推荐

足球赛事数据API:开发者生存指南(附真实踩坑记录)

作为一个既爱看球又爱写代码的老宅男,我这些年用过的足球API比看过的比赛还多。从最初被各种API文档折磨到怀疑人生,到现在能闭着眼睛调接口,中间的血泪史够写本书了。今天就把这些经验(和教训)分享给各位同好,特别是那些正在为"老板要做个足球App"而秃头的同行们。文档清晰免费层可用响应格式规范API-Sports免费额度大方支持GraphQL有中文文档(难得!Sportmonks数据全面有Webhook支持按需付费。

Happy0970的博客 2191

Rabbitmq priority 优先级

Rabbitmq priority 优先级顾名思义,具有更高优先级的队列具有较高的优先权,优先级高的消息具备优先被消费的特权。 RabbitMQ has priority queue implementation in the core as of version 3.5.0.在系统应用中会根据业务的优先级来决定哪些内容优先被解决,那么在RabbitMQ 3.5+版本中支持了队列优先级和消息优先级...

qq_29663071的博客 896

Shopee 虾皮API接口:商品详情采集的实践

随着电商行业的蓬勃发展,数据采集和分析在商业决策中扮演着越来越重要的角色。Shopee作为东南亚领先的电商平台,拥有大量的商品数据。通过Shopee的API接口,我们可以方便地获取商品详情,为数据分析和市场研究提供有力支持。本文将介绍如何使用Shopee API接口采集商品详情,并分享一些实践技巧。提供了丰富的数据接口,包括商品详情、店铺信息、订单数据等。通过API接口,开发者可以轻松地获取Shopee平台上的数据,进行进一步的处理和分析。Shopee API接口:商品详情采集的实践与技巧。

An4480的博客 1886

RabbitMQ之web界面解析

RabbitMQ之web界面解析 登录rmq管理平台 点击某个队列进入详情页面 获取某个队列的信息 新建一个队列进行监听 其中ttl的时间单位:微秒 上图设置得太短了(100),懒得重新截图了。。。♪(・ω・)ノ 1秒=1000000 微秒(μs) 下面重新建立一个队列,不设置过期时间 通过过滤器,可以快速找到刚刚添加的队列 新建一个交换机(direct为例) 将Exchange与Queue绑定 点击Exchange的Name可进入到Exchange的详情页面,在里面将Exchange与Q

weixin_38446891的博客 2863

LangFuse部署与实践

LangFuse的原理主要是基于可观察性和分析技术来监控和优化低延迟消息(LLM)应用。它提供了一套完整的解决方案,通过收集、处理和分析LLM应用在运行过程中产生的各种数据,来生成实时的、深入的、可操作的见解。通过提供实时的、深入的见解和可视化的跟踪功能,LangFuse使得识别和解决应用性能问题变得更加简单和高效。总的来说,LangFuse的原理是通过综合运用可观察性和分析技术,来提供对LLM应用的全面监控和优化能力。这使得开发者和运维团队能够更加高效地管理和维护他们的应用,从而提升用户体验和业务效益。

pumpkin84514的博客 7939

使用Navicat连接Oracle数据库及ORA-12541: TNS: 无监听程序、ORA-28547:connection to server failed、ORA-12514:TNS报错解决方案

使用Navicat连接Oracle数据库及ORA-12541: TNS: 无监听程序、ORA-28547:connection to server failed、ORA-12514:TNS报错解决方案。

蓝多多的小仓库 5217

RabbitMQ高级特性(四):RabbitMQ之TTL(存活时间/过期时间)

RabbitMQ高级特性(四):RabbitMQ之TTL(存活时间/过期时间)

HaleyTiger的博客 1299

GEE APP:基于Sentinel-1 SAR数据的洪水检测与制图系统:利用GEE平台实现洪涝区域提取、面积统计及矢量栅格化导出

本文介绍了一个基于Google Earth Engine平台的Sentinel-1 SAR洪水监测应用,通过自动化流程实现洪水淹没区域的精准检测与分析。系统采用Refined Lee滤波降噪和Otsu自适应阈值算法,结合SRTM地形数据消除干扰,可自动计算淹没面积并生成可视化结果。该工具提供用户友好的交互界面,支持多格式数据导出,适用于灾害应急响应、环境监测和城市规划等领域,具有云平台处理、算法鲁棒性强和操作简便等技术优势。

此星光明博客 327

RabbitMQ中TTL

RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。⑤ 查看消息,可以看到消息,但十秒之后,消息自动消失,因为我们设置了十秒消息过期。TTL 全称 Time To Live(存活时间/过期时间)。参数:表示过期时间,单位毫秒 ,10000表示10秒。当消息到达存活时间后,还没有被消费,会被自动清除。查看控制台,发现有10条消息,十秒之后自动过期。在队列后面添加.ttl(10000)为10s。① 修改管理后台界面,增加队列。运行程序,查看后台管理系统。

Knight 1156

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9499

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab程序)

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab完整程序)

前程算法屋的博客 2180

RabbitMQ设置TTL(消息过期)时间(重要)

RabbitMQ设置消息过期时间

qq_46112274的博客 1628

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 135

RabbitMQ - 消息超时设置/设置消息的生存(过期)时间TTL

背景: 当消息发布方一直在推送消息,而消息的订阅方一直未订阅,且恰巧接收消息的队列未设置deletewhenunused。则消息会一直堆积在队列里面,长此以往难免会出现问题。那么有什么方法可以避免这种问题发生呢? 解决方案: 两种方法: (1)在创建队列的时候,为队列进行“当没有消费者的时候,自动删除队列,即:auto-delete”。 (2)为存入队列的消息设置一个过期时间,即若消息超过...

✍Snoring cat 6619

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RabbitMQ系列教程(十一)RabbitMQ队列/消息的生存时间(Time-To-Live)

概述 RabbitMQ支持队列的过期时间设置,从消息入队列开始,只要超过了队列的超时时间配置,消息就会被自动清除。同时RabbitMQ也支持设置消息的生存时间,在发送消息时通过headers参数可以设置。 设置队列的生存时间(TTL) 在消费端声明队列时,指定x-message-ttl参数,设置生存时间 Map<String, Object> args = new HashMap&lt...

warybee 1604

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RabbitMQ 消息过期机制(TTL):队列 TTL 与消息 TTL 的区别

RabbitMQ 的 TTL(Time To Live,生存时间)机制用于控制消息或队列的存活时间,防止消息无限期滞留。TTL 分为队列级别和消息级别,两者在作用对象、设置方式、行为结果上存在关键区别。下面我将逐步解释这些区别,确保内容基于真实可靠的 RabbitMQ 实现(版本 3.8+)。通过以上解释,您应该能清晰区分队列 TTL 和消息 TTL。实际应用中,根据需求选择合适的机制:如果需管理队列生命周期,用队列 TTL;如果需控制消息时效,用消息 TTL。如有具体场景问题,欢迎提供更多细节!

2501_93894306的博客 815

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RabbitMQ--消息的过期时间(TTL)--使用/原理

本文介绍RabbitMQ的消息的过期时间。 本内容也是Java后端面试常见的问题。

IT利刃出鞘的博客 5645

rabbitmq---TTL机制(二)

rabbitmq中ttl介绍

weixin_43811057的博客 3621

RabbitMQ 高级篇九 TTL设置队列或消息有效期队列及消息

TTL队列及消息介绍本文是《RabbitMQ精讲系列》中第十六篇:RabbitMQ消息中间件技术精讲16 高级篇九 TTL队列及消息。如果想学习RabbitMQ的朋友建议从第一篇开始看起。TTL:TTL是Time To Live的缩写,也就是生存时间。也就是说RabbitMQ支持消息的过期时间,在消息发送的时候可以对过期时间进行指定;同时RabbitMQ支持队列的过期...

byj4352的博客 485

【RabbitMq 篇四】-延迟队列(DLX+TTL)

前言 延迟消费在 RabbitMq 没有属性可以设置,只能通过 死信交换器(DLX)和设置过期时间(TTL)结合起来达到延迟的效果,所以我要介绍DLX和TTL以及实现延迟队列。 正文 使用所有框架和中间件的版本 环境 框架 版本 Spring Boot 2.1.5.RELEASE RabbitMq 3.7.15 ...

晏霖/胖虎的博客 1104

RabbitMQ 延迟队列,延迟任务,死信队列

延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时。 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单。 场景三:过1分钟给新注册会员的用户,发送注册邮件等。 实现方案 定时任务轮询数据库,看是否有产生新任务,如果产生则消费任务 pcntl_alarm为进程设置一个闹钟信号 swoole的异步高精度定时器:swoole_time_tick(类似javascript的setInterval)和swool

JineD的博客 5589

RabbitMQ消息TTL:消息过期和自动清理

在消息队列系统中,处理过期数据是保证系统高效运行的关键环节。RabbitMQ提供的消息TTL(Time-To-Live,生存时间)机制允许你为消息设置过期时间,当消息超过指定时间未被消费时将自动被清理。本文将详细介绍RabbitMQ消息TTL的工作原理、使用场景及配置方法,帮助你解决消息堆积和资源浪费问题。 ## 什么是消息TTL 消息TTL(Time-To-Live)是RabbitMQ提供的...

gitblog_00658的博客 1238

RabbitMQ--基础--10.1--消息的TTL

通过队列属性x-expires可以控制队列被自动删除前处于未使用状态的时间,未使用状态的时间 有如下含义。

zhou920786312的博客 1403

SpringCloudStream学习(四)TTL(存活时间)Dead Letter Exchanges(死信交换机)

TTL(Time-To-Live and Expiration): RabbitMQ既能对队列设置TTL也能对消息设置TTL,消息TTL可以应用于单个队列、一组队列或应用于逐个消息。 如何给消息设置TTL? rabbitmqctl rabbitmqctl set_policy TTL ".*" '{"message-ttl":60000}' --apply-to queues ra...

做一个认真的程序员 1441

rabbitMQ延时队列——TTL和DLX

一台普通的rabbitmq服务器单队列容纳千万级别的消息还是没什么压力的,而且rabbitmq集群扩展支持的也是非常好的,即存入订单的时候就算出订单的过期时间插入数据库,设置定时任务查询数据库的时候就只需要查询过期了的订单,正常情况下,由消费者A去消费队列“normal-queue”中的消息,但实际上没有,而是等消息过期。消息过期后,变成死信,根据配置会被投递到DLX,然后根据死信路由键投到死信队列(即延时队列)中。设置队列的过期时间用 x-expires 参数,单位毫秒,注意,不能设置为0。

m0_62019369的博客 1255

rabbitmq利用死信队列+TTL 实现延迟队列

程序员们,在北上广你还能买房吗? &gt;&gt;&gt;    ...

u011196623的专栏 2407
上一篇: RabbitMQ投递消息时确认机制Confirm和Return
下一篇: RabbitMQ设置死信队列
盖了帽
博客等级 码龄8年 17粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值