项目实战之RabbitMQ死信队列应用

🧑‍💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。


在这里插入图片描述


文章目录

  • 🌟架构图
  • 🌟application.yml文件
  • 🌟RabbitMQ配置
  • 🌟消息发送、消费
  • 🌟写在最后

🌟架构图

  1. 死信队列架构图
    在这里插入图片描述
  2. 本地消息表
    在这里插入图片描述

🌟application.yml文件

mqconfig:#延迟队列,不能被监听消费stock_release_delay_queue: stock.release.delay.queue#延迟队列的消息过期后转发的队列stock_release_queue: stock.release.queue#交换机stock_event_exchange: stock.event.exchange#进入延迟队列的路由keystock_release_delay_routing_key: stock.release.delay.routing.key#消息过期,进入释放队列的keystock_release_routing_key: stock.release.routing.key#消息过期时间,毫秒,测试改为15秒ttl: 360000

🌟RabbitMQ配置

@Configuration
@Data
public class RabbitMQConfig {/*** 交换机*/@Value("${mqconfig.stock_event_exchange}")private String eventExchange;/*** 第一个队列延迟队列,*/@Value("${mqconfig.stock_release_delay_queue}")private String stockReleaseDelayQueue;/*** 第一个队列的路由key* 进入队列的路由key*/@Value("${mqconfig.stock_release_delay_routing_key}")private String stockReleaseDelayRoutingKey;/*** 第二个队列,被监听恢复库存的队列*/@Value("${mqconfig.stock_release_queue}")private String stockReleaseQueue;/*** 第二个队列的路由key** 即进入死信队列的路由key*/@Value("${mqconfig.stock_release_routing_key}")private String stockReleaseRoutingKey;/*** 过期时间*/@Value("${mqconfig.ttl}")private Integer ttl;/*** 消息转换器* @return*/@Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}/*** 创建topic交换机* 一个微服务一个交换机* @return*/@Beanpublic Exchange stockEventExchange(){return new TopicExchange(eventExchange,true,false);}/*** 延迟队列* @return*/@Beanpublic Queue stockReleaseDelayQueue(){Map<String,Object> args=new HashMap<>();args.put("x-message-ttl",ttl);args.put("x-dead-letter-routing-key",stockReleaseRoutingKey);args.put("x-dead-letter-exchange",eventExchange);return new Queue(stockReleaseDelayQueue,true,false,false,args);}/*** 死信队列,用于被监听*/@Beanpublic Queue stockReleaseQueue(){return new Queue(stockReleaseQueue,true,false,false);}/*** 死信队列绑定关系* @return*/@Beanpublic Binding stockReleaseBinding(){return new Binding(stockReleaseQueue,Binding.DestinationType.QUEUE,eventExchange,stockReleaseRoutingKey,null);}/*** 延迟队列绑定关系* @return*/@Beanpublic Binding stockReleaseDelayBinding(){return new Binding(stockReleaseDelayQueue,Binding.DestinationType.QUEUE,eventExchange,stockReleaseDelayRoutingKey,null);}
}

🌟消息发送、消费

  1. 接受到订单服务大哥锁定库存请求时,进行锁定库存消息的发送。
  2. 发送消息的同时,在本地消息表插入记录。
  3. 消息消费时,找订单服务大哥查询订单状态即可。
  4. 根据订单状态,进行后续处理。

🌟写在最后

RabbitMQ项目实战之死信队列应用到此就结束啦!感谢大家的阅读,欢迎大家在评论区进行交流。


请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247497.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言&#xff0c;这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念&#xff0c;将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

【unity3D】创建游戏物体的三种方式

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是在unity中创建游戏物体的三种方式 unity中创建游戏物体 使用构造函数创建一个空的游戏对象根据现有的预制体资源或者场景中已有的物体进…

如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

与地理位置有关的应用相信大家都很熟悉了&#xff0c;无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配&#xff0c;我们几乎每天都在使用类似的功能与服务。不过你有没有想过&#xff0c;如何在自己开发的应用中嵌入类似的功能&#xff1f; 本文Akamai将为大家提…

第24章:Kubernetes Helm Introduction

目录 1. Helm简介2. Helm Charts文件&#xff08;.tgz&#xff09;组成3. Helm核心术语&#xff1a;4. Helm常用命令&#xff1a;5. DIY简单Helm Charts参考链接 1. Helm简介 Helm用于管理Kubernetes应用程序&#xff0c;Helm Charts可以用于定义、安装和升级最复杂的Kubernet…

【android开发-14】android中fragment用法详细介绍

1&#xff0c;fragment是什么&#xff1f; Fragment是Android中的一种组件&#xff0c;它在Android 3.0&#xff08;API级别11&#xff09;及以后的版本中引入。Fragment可以用来在Activity中添加一个或多个具有自己的用户界面的片段。它们可以与Activity进行交互&#xff0c;并…

Batch Normalization

1.是什么&#xff1f; 批量归一化&#xff08;Batch Normalization&#xff09;&#xff0c;由Google于2015年提出&#xff0c;是近年来深度学习&#xff08;DL&#xff09;领域最重要的进步之一。该方法依靠两次连续的线性变换&#xff0c;希望转化后的数值满足一定的特性&am…

STM32串口通信初探:使用HAL库实现基本功能

在本文中&#xff0c;我们将探索如何使用STM32的HAL库来实现串口通信的基本功能。串口通信是一种常见的外设通信方式&#xff0c;用于在微控制器和其他外部设备之间进行数据传输。在STM32系列微控制器中&#xff0c;HAL库提供了简单且灵活的方法来实现串口通信。我们将重点讨论…

python读取所有sheet内容到另一个文件中

实现效果&#xff1a; 将原excel中的步骤、预期效果列按回车拆成多行数据&#xff0c;其余字段值填充其他数据 实现结果&#xff1a; # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your code. # Press Double Shift to search everyw…

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址&#xff1a; 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例&#xff0c;Mac安装方式相同 2. 安装 下载好后&#xff0c;打开安装包&#xff0c;进入安装界面&#xff1a; 点击Next&#xff0c;进入安…

LInux组管理及拓展

目录 一、Linux组管理 &#xff08;一&#xff09;、组的概述 1.概述 2.作用 &#xff08;二&#xff09;、组操作 1.创建 2.修改 3.删除 4.添加用户 二、用户信息查看 &#xff08;一&#xff09;、id &#xff08;二&#xff09;、finger &#xff08;三&#x…

【专题】【中值定理-还原大法】

1&#xff09;构造辅助函数 2&#xff09;罗尔定理&#xff1a; 闭区间连续&#xff0c;开区间可导 F&#xff08;a&#xff09;F&#xff08;b&#xff09; 3&#xff09;F‘&#xff08;ξ&#xff09;0&#xff0c;原命题得证 极限保号性&#xff1a;

ISIS配置以及详解

作者简介&#xff1a;大家好&#xff0c;我是Asshebaby&#xff0c;热爱网工&#xff0c;有网络方面不懂的可以加我一起探讨 :1125069544 个人主页&#xff1a;Asshebaby博客 当前专栏&#xff1a; 网络HCIP内容 特色专栏&#xff1a; 常见的项目配置 本文内容&am…