当前位置:首页 > 科技  > 软件

RabbitMQ代码篇之过期时间,死信队列,延迟队列,优先级队列的基本使用

来源: 责编: 时间:2024-03-18 09:38:28 251观看
导读这篇是 代码篇 ,略过 Direct,Fanout,Topic 这几种基本队列的使用介绍,但是 Github 仓库上可以查看到的。图片<( ̄︶ ̄)↗[GO!]冲冲冲~死信队列死信是指有这三个特点的消息消息被拒绝,且没有重新入队(投递)消息过期消息队列满了// n

这篇是 代码篇 ,略过 Direct,Fanout,Topic 这几种基本队列的使用介绍,但是 Github 仓库上可以查看到的。6yG28资讯网——每日最新资讯28at.com

图片图片6yG28资讯网——每日最新资讯28at.com

<( ̄︶ ̄)↗[GO!]6yG28资讯网——每日最新资讯28at.com

图片冲冲冲~6yG28资讯网——每日最新资讯28at.com

死信队列

死信是指有这三个特点的消息6yG28资讯网——每日最新资讯28at.com

  • 消息被拒绝,且没有重新入队(投递)
  • 消息过期
  • 消息队列满了
// nack 返回 false,并放弃重新回到队列channel.basicNack(deliveryTag, false, false);//拒绝,不重新入队列channel.basicReject(deliveryTag, false);

死信交换机 —— DLX:Dead-Letter-Exchange6yG28资讯网——每日最新资讯28at.com

@Beanpublic DirectExchange directExchange2() {    /**     * 交换机名,后面两个是默认值就:持久化,不自动删除     */    return new DirectExchange(RabbitMQConstants.DIRECT_EXCHANGE2, true, false);}@Beanpublic Queue directQueue2() {    return QueueBuilder            .durable(RabbitMQConstants.DIRECT_QUEUE2)            .deadLetterExchange(RabbitMQConstants.DLX_EXCHANGE)            .deadLetterRoutingKey(RabbitMQConstants.DLX_ROUTING_KEY)            .build();}/** * 将队列绑定到交换机上 * * @return */@Beanpublic Binding directBinding2() {    return BindingBuilder.            bind(directQueue2()).            to(directExchange2()).            with(RabbitMQConstants.DIRECT_BINDING_KEY2);}

过期时间

两种设置方式6yG28资讯网——每日最新资讯28at.com

  • 创建队列时设置,消息会被排序加入到队列头部,短的在前
  • 发送消息时设置,时间到期不会立刻删除,而是在推送消息时删除

同时设置的话,过期时间已短的为准6yG28资讯网——每日最新资讯28at.com

/** * 创建队列时设置 * @return */@Beanpublic Queue ttlQueue() {    Map<String, Object> args = new HashMap<>();    //设置消息过期时间    args.put("x-message-ttl", 5000);    //设置死信交换机    args.put("x-dead-letter-exchange", RabbitMQConstants.DLX_EXCHANGE);    //设置死信 routing_key    args.put("x-dead-letter-routing-key", RabbitMQConstants.DLX_ROUTING_KEY);    return new Queue(RabbitMQConstants.TTL_QUEUE, true, false, false, args);}
/** * 发送消息时设置 * @return */public void sendMessage2() throws JsonProcessingException {    User user = new User();    ObjectMapper objectMapper = new ObjectMapper();    byte[] bytes = objectMapper.writeValueAsBytes(user);    // 10 s 后过期    Message message =            MessageBuilder.withBody(bytes)                    .setExpiration("10000").build();    // 交换机,路由键,信息    rabbitTemplate.convertAndSend(            RabbitMQConstants.DIRECT_EXCHANGE2,            RabbitMQConstants.DIRECT_ROUTING_KEY2,            message    );}

效果演示

图片图片6yG28资讯网——每日最新资讯28at.com

队列 5 秒延迟的效果6yG28资讯网——每日最新资讯28at.com

图片图片6yG28资讯网——每日最新资讯28at.com

延迟队列

两种方案实现6yG28资讯网——每日最新资讯28at.com

  • 利用 死信队列+过期时间 去处理,消息过期被转发到死信交换机,死信交换机路由到死信队列进行处理
  • 使用插件 rabbitmq_delayed_message_exchange

插件可以在这里找到

本文链接:http://www.28at.com/showinfo-26-76494-0.htmlRabbitMQ代码篇之过期时间,死信队列,延迟队列,优先级队列的基本使用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 关于Java程序服务预热那些事

下一篇: 想进阿里?先搞懂Spring Bean的循环依赖!

标签:
  • 热门焦点
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top