做预定网站的作用网站建设几个文件夹

bicheng/2026/1/19 6:13:23/文章来源:
做预定网站的作用,网站建设几个文件夹,建筑公司有哪些部门和职位,主流网站开发技术框架文章目录 一、死信的概念二、死信的来源三、实战1、消息 TTL 过期2、队列达到最大长度3、消息被拒 总结 一、死信的概念 先从概念解释上搞清楚这个定义#xff0c;死信#xff0c;顾名思义就是无法被消费的消息#xff0c;字面意思可以这样理解#xff0c;一般来说#x… 文章目录 一、死信的概念二、死信的来源三、实战1、消息 TTL 过期2、队列达到最大长度3、消息被拒 总结 一、死信的概念 先从概念解释上搞清楚这个定义死信顾名思义就是无法被消费的消息字面意思可以这样理解一般来说producer 将消息投递到 broker 或者直接到 queue 里了consumer 从 queue 取出消息进行消费但某些时候由于特定的原因导致 queue 中的某些消息无法被消费这样的消息如果没有后续的处理就变成了死信有死信自然就有了死信队列。 应用场景:为了保证订单业务的消息数据不丢失需要使用到 RabbitMQ 的死信队列机制当消息消费发生异常时将消息投入死信队列中.还有比如说: 用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。 二、死信的来源 消息 TTL 过期 队列达到最大长度(队列满了无法再添加数据到 mq 中) 消息被拒绝(basic.reject 或 basic.nack)并且 requeuefalse. 三、实战 1、消息 TTL 过期 生产者代码 public class Producer {private static final String NORMAL_EXCHANGE normal_exchange;public static void main(String[] argv) throws Exception {try (Channel channel RabbitMqUtils.getChannel()) {channel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);//设置消息的 TTL 时间AMQP.BasicProperties properties new AMQP.BasicProperties().builder().expiration(10000).build();//该信息是用作演示队列个数限制for (int i 1; i 11 ; i) {String messageinfoi;channel.basicPublish(NORMAL_EXCHANGE, zhangsan, properties, message.getBytes());System.out.println(生产者发送消息:message);}}} }消费者 C1 代码(启动之后关闭该消费者 模拟其接收不到消息) public class Consumer01 {//普通交换机名称private static final String NORMAL_EXCHANGE normal_exchange;//死信交换机名称private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();//声明死信和普通交换机 类型为 directchannel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);//声明死信队列String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);//死信队列绑定死信交换机与 routingkeychannel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);//正常队列绑定死信队列信息MapString, Object params new HashMap();//正常队列设置死信交换机 参数 key 是固定值params.put(x-dead-letter-exchange, DEAD_EXCHANGE);//正常队列设置死信 routing-key 参数 key 是固定值params.put(x-dead-letter-routing-key, lisi);String normalQueue normal-queue;channel.queueDeclare(normalQueue, false, false, false, params);channel.queueBind(normalQueue, NORMAL_EXCHANGE, zhangsan);System.out.println(等待接收消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);System.out.println(Consumer01 接收到消息message);};channel.basicConsume(normalQueue, true, deliverCallback, consumerTag - {});} }消费者 C2 代码(以上步骤完成后 启动 C2 消费者 它消费死信队列里面的消息) public class Consumer02 {private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);channel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);System.out.println(等待接收死信队列消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);System.out.println(Consumer02 接收死信队列的消息 message);};channel.basicConsume(deadQueue, true, deliverCallback, consumerTag - {});} }2、队列达到最大长度 消息生产者代码去掉 TTL 属性 public class Producer {private static final String NORMAL_EXCHANGE normal_exchange;public static void main(String[] argv) throws Exception {try (Channel channel RabbitMqUtils.getChannel()) {channel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);//该信息是用作演示队列个数限制for (int i 1; i 11 ; i) {String messageinfoi;channel.basicPublish(NORMAL_EXCHANGE,zhangsan,null, message.getBytes());System.out.println(生产者发送消息:message);}}} }C1 消费者修改以下代码(启动之后关闭该消费者 模拟其接收不到消息) public class Consumer01 {//普通交换机名称private static final String NORMAL_EXCHANGE normal_exchange;//死信交换机名称private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();//声明死信和普通交换机 类型为 directchannel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);//声明死信队列String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);//死信队列绑定死信交换机与 routingkeychannel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);//正常队列绑定死信队列信息MapString, Object params new HashMap();//正常队列设置死信交换机 参数 key 是固定值params.put(x-dead-letter-exchange, DEAD_EXCHANGE);//正常队列设置死信 routing-key 参数 key 是固定值params.put(x-dead-letter-routing-key, lisi);//设置正常队列长度限制params.put(x-max-length,6);String normalQueue normal-queue;channel.queueDeclare(normalQueue, false, false, false, params);channel.queueBind(normalQueue, NORMAL_EXCHANGE, zhangsan);System.out.println(等待接收消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);System.out.println(Consumer01 接收到消息message);};channel.basicConsume(normalQueue, true, deliverCallback, consumerTag - {});} }注意此时需要把原先队列删除 因为参数改变了 C2 消费者代码 public class Consumer02 {private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);channel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);System.out.println(等待接收死信队列消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);System.out.println(Consumer02 接收死信队列的消息 message);};channel.basicConsume(deadQueue, true, deliverCallback, consumerTag - {});} }3、消息被拒 消息生产者代码 public class Producer {private static final String NORMAL_EXCHANGE normal_exchange;public static void main(String[] argv) throws Exception {try (Channel channel RabbitMqUtils.getChannel()) {channel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);//该信息是用作演示队列个数限制for (int i 1; i 11 ; i) {String messageinfoi;channel.basicPublish(NORMAL_EXCHANGE,zhangsan,null, message.getBytes());System.out.println(生产者发送消息:message);}}} }C1 消费者代码(启动之后关闭该消费者 模拟其接收不到消息) public class Consumer01 {//普通交换机名称private static final String NORMAL_EXCHANGE normal_exchange;//死信交换机名称private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();//声明死信和普通交换机 类型为 directchannel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);//声明死信队列String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);//死信队列绑定死信交换机与 routingkeychannel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);//正常队列绑定死信队列信息MapString, Object params new HashMap();//正常队列设置死信交换机 参数 key 是固定值params.put(x-dead-letter-exchange, DEAD_EXCHANGE);//正常队列设置死信 routing-key 参数 key 是固定值params.put(x-dead-letter-routing-key, lisi);String normalQueue normal-queue;channel.queueDeclare(normalQueue, false, false, false, params);channel.queueBind(normalQueue, NORMAL_EXCHANGE, zhangsan);System.out.println(等待接收消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);if(message.equals(info5)){System.out.println(Consumer01 接收到消息 message 并拒绝签收该消息);//requeue 设置为 false 代表拒绝重新入队 该队列如果配置了死信交换机将发送到死信队列中channel.basicReject(delivery.getEnvelope().getDeliveryTag(), false);}else {System.out.println(Consumer01 接收到消息message);channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);}};boolean autoAck false;channel.basicConsume(normalQueue, autoAck, deliverCallback, consumerTag - {});} }C2 消费者代码 public class Consumer02 {private static final String DEAD_EXCHANGE dead_exchange;public static void main(String[] argv) throws Exception {Channel channel RabbitUtils.getChannel();channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);String deadQueue dead-queue;channel.queueDeclare(deadQueue, false, false, false, null);channel.queueBind(deadQueue, DEAD_EXCHANGE, lisi);System.out.println(等待接收死信队列消息.....);DeliverCallback deliverCallback (consumerTag, delivery) - {String message new String(delivery.getBody(), UTF-8);System.out.println(Consumer02 接收死信队列的消息 message);};channel.basicConsume(deadQueue, true, deliverCallback, consumerTag - {});} }启动消费者 1 然后再启动消费者 2 总结 以上就是RabbitMQ之死信队列的相关知识点希望对你有所帮助。

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

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

相关文章

网站设计论文大全怎么建设课程的网站

Filter 可认为是 Servlet的一种 “ 加强版 ”,它主要用于对用户请求进行预处理, 也可以对HttpServletResponse 进行后处理,是个典型的处理链。Filter 也可对用户请求生成响应,这一 点与Servlet 相同, 但实际上很少会使…

中海建路桥建设有限公司网站重庆秀山网站建设公司

题目 如何在一棵二叉树中找出它最低层最左边节点的值?假设二叉树中最少有一个节点。例如,在如图7.5所示的二叉树中最低层最左边一个节点的值是5。 分析 可以用一个变量bottomLeft来保存每一层最左边的节点的值。在遍历二叉树时,每当遇到新…

常德论坛尚一网手机网站优化排名怎么做

CentOS7 忘记root密码 长时间不用的 CentOS 机器再次开机的时候忽然忘记了密码,总不能就重装一台吧,还有好多服务在机器上,于是决定重置root的密码。   如果是已经开启的机器,需要进行关闭,重新启动。在启动选择内核…

成都企业网站备案流程超全的开源建站系统大全

1. 假设你是正在面试前端开发工程师的候选人,面试官让你详细讲一讲你作为队长参加支付宝小程序开发者大赛,你的作品是“甲骨文猜谜与探索”,请你讲一讲反思、收获和亮点。 在我作为队长参加支付宝小程序开发者大赛的过程中,我们的…

含数据的wordpress汕头seo推广外包

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

怎样优化网站案例焦作 网站建设

1、线上链接地址 浏览器坐标属性 2、screen系列 2.1、screenX: 鼠标位置相对于用户屏幕水平偏移量 2.2、screenY: 鼠标位置相对于用户屏幕垂直偏移量 3、client系列 3.1、clientX: 鼠标位置相对于文档的左边距(不随页面滚动而改变&a…

wordpress软件网站模板下载失败住房和城乡建设部官网查询平台

软件开发整体介绍 软件开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型介绍 技术选型 功能架构 角色 开发环境搭建 数据 创建database reggie,在里面创建表: maven 创建springboot项目并导入相关依赖坐标: 我们可以在项目…

百度收录网站关键字毕节市建设厅网站

一、mybatis 简单注解 关键注解词 : Insert : 插入sql , 和xml insert sql语法完全一样 Select : 查询sql, 和xml select sql语法完全一样 Update : 更新sql, 和xml update sql语法完全一样 Delete : 删除sql, 和xml d…

网站优化外包网站开发需要的软件

1.在用MyEclipse开发的时不用配置环境变量,因为MyEclipse是个集成的IDE,之中指定了jre。环境变量配置与否和开发没有关系,环境变量是给成品用的。2. 除非要在命令行下用javac命令来编译java程序,否则不需要设置classpath环境变量&…

网站建设案例怎么样高端大气上档次的网站

p47下车减速功能 p47下车减速功能加速功能下车减速功能 p47下车减速功能 加速功能 上图是ue自带的加速功能,检测到按w时输入轴会传1给设置油门输入,就会加速 所以,减速也可以通过蓝图反方向制作 下车减速功能 打开Sedan蓝图类的上下车图表…

做纺织外贸网站东莞seo排名优化

Java 一个数组集合List 赋值给另一个数组集合List ,两个数组集合属性部分一致。 下面是一个Demo, 具体要根据自己的业务调整。 import java.util.ArrayList; import java.util.List;class People {private String name;private int age;private String address;publ…

emlog做企业网站如何制作图片配文字

有三种数量无限的砝码和一个天平,天平的一端有一个质量为 m 的物品,问能否通过放置砝码使得天平平衡? 输入 第一行包含一个整数 T (1 ≤ T ≤ 1e5),表示测试用例的组数。 每组测试用例的第一行包含四个整数 a,b,c,m (1 ≤ a,b,c,…

哈尔滨房产信息网官方网站龙岩做网站开发多久时间

目录 1、问题说明 2、使用Windbg动态调试去初步分析 3、使用Windbg详细分析 4、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门…

网站安全性设计什么网站广告做多

学习笔记&#xff1a; 1. 使用{Binding}标记拓展在XAML中进行绑定。通过绑定&#xff0c;所有数据上下文的变化都将自动更新到控件上。 <TextBlock Text"{Binding Name}"/> 2. 绑定模式 可以通过指定{Binding}的Mode来修改绑定的行为: OneWay 源的变化自动…

展示型网站的特点浦东网站开发培训班

A. Strange Splitting 思路 贪心 将题目中的红色元素范围不等于蓝色元素范围改成红色元素范围小于蓝色范围其实是一样的 那么红色元素范围最小是0&#xff0c;要占据一个元素。然后我们只要从数组中找到两个不同的元素就能够使得蓝色元素范围大于0&#xff0c;满足题意。 …

东莞建材网站建设有了域名空间服务器怎么做网站

华子目录 简介概念功能 分类文字接口图形接口 文字接口ssh连接服务器浅浅介绍一下加密技术凯撒加密加密分类对称加密非对称加密非对称加密方法&#xff08;也叫公钥加密&#xff09; ssh两大类认证方式&#xff1a;连接加密技术简介密钥解析 ssh工作过程版本协商阶段密钥和算法…

长沙市做网站的网站wordpress 回复楼层

在第二章的第7课&#xff0c;我们实现了一个推流端&#xff0c;可以把音视频推送到rtmp服务器&#xff1b;在第一章的第4课&#xff0c;我们实现了一个播放器&#xff0c;可以正常播放rtmp音视频流。聪明的你应该可以想到了&#xff1a;把推流端和播放端合并在一起&#xff0c;…

微软公司做网站的软件互联网营销有哪些方式

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

做网站所需技术新网站多久收录内页

目录Spring IOCIOC是什么IOC可以做什么依赖注入IOC和DIIOC容器Bean配置IOC容器spring ioc 依赖XML配置实例化容器使用容器xml配置详解spring对bean的管理1、创建bean的三种方式2、bean对象的作用范围3、bean对象的生命周期构造函数依赖注入Setter方法依赖注入注解配置使用xml和…

星巴克网站建设WordPress代码查看

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…