【rabbitmq】绑定死信队列示例

ops/2024/10/31 23:46:30/

目录

          • 1. 说明
          • 2. 截图示例
          • 3. 代码示例

1. 说明
  • 1.正常队列绑定死信交换机和死信routing_key,正常队列中的消息在特殊情况下变为死信时,将死信通过绑定的死信交换机转移到死信队列中。
  • 2.死信队列说明。
  • 3.这里演示的是10秒未消费的消息,进入死信队列。
2. 截图示例
  • 1.消息未过期
    在这里插入图片描述
  • 2.消息10秒后过期,进入死信队列
    在这里插入图片描述
  • 3.项目结构图
    在这里插入图片描述
3. 代码示例
  • 1.pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version></parent><groupId>com.learning</groupId><artifactId>springboot</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.5.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><!--打jar包使用--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
  • 2.application.yaml
spring:rabbitmq:host: 192.168.2.11port: 5672username: adminpassword: adminvirtual-host: /
  • 3.RabbitMQConfig配置类
package com.learning.config;import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** rabbitmq配置类*/
@Configuration  
public class RabbitMQConfig{/*** 正常交换机名*/public static final String EXCHANGE_NAME = "topic_exchange";/*** 正常队列名*/public static final String QUEUE_NAME = "topic_queue";@Bean("topic_queue")public Queue queue() {Queue queue = new Queue(QUEUE_NAME, true, false, false);// 设置死信交换机queue.addArgument("x-dead-letter-exchange", "dlx_exchange");// 设置死信routingkeyqueue.addArgument("x-dead-letter-routing-key", "dlx_routing_key");// 设置队列的过期时间queue.addArgument("x-message-ttl", 10000);// 设置队列的长度限制queue.addArgument("x-max-length", 10);return queue;}/*** 主题模式,这里按实际业务切换不同模式* @return*/@Bean("topic_exchange")public Exchange exchange() {return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}  @Bean  public Binding binding(@Qualifier("topic_queue") Queue queue,@Qualifier("topic_exchange") Exchange exchange) {return BindingBuilder.bind(queue).to(exchange).with("topic_routing_key").noargs();}public static final String DLX_QUEUE_NAME = "dlx_queue";public static final String DLX_EXCHANGE_NAME = "dlx_exchange";@Bean("dlx_queue")public Queue dlxQueue() {return new Queue(DLX_QUEUE_NAME, true);}@Bean("dlx_exchange")public Exchange dlxExchange() {return ExchangeBuilder.topicExchange(DLX_EXCHANGE_NAME).durable(true).build();}@Beanpublic Binding dlxBinding(@Qualifier("dlx_queue") Queue queue,@Qualifier("dlx_exchange") Exchange exchange) {return BindingBuilder.bind(queue).to(exchange).with("dlx_routing_key").noargs();}
}
  • 4.测试类
package com.learning;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/*** @Author wangyouhui* @Description**/
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMQTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void test1(){rabbitTemplate.convertAndSend("topic_exchange", "topic_routing_key", "测试死信消息,10秒过期");}
}

http://www.ppmy.cn/ops/129973.html

相关文章

第二届新生程序设计竞赛热身赛(C语言)

A:饥饿的XP XP迷失在X星球&#xff0c;他醒来时已经很久很久很久没有吃过东西了。他突然发现身边有一张地图&#xff0c;上面有X星球上每一个食物供给点的位置。太好了&#xff0c;XP跳了起来。他决定先把肚子填饱再去寻找其他伙伴。现在已知XP的位置(X, Y)&#xff0c;以及他的…

【钓鱼攻防】手把手带你使用GoPhish钓鱼框架

这个世界并不是掌握在那些嘲笑者的手中&#xff0c;而恰恰掌握在能够经受得住嘲笑与批评仍不断往前走的人手中。 快速搭建平台Gophish 推荐使用Gophish开源项目搭建测试平台&#xff0c;伪造钓鱼页面、发送钓鱼邮件、统计测试效果。 下载安装Gophish 解压 修改配置文件&…

MySQL 视图

视图 介绍&#xff1a;视图&#xff08;view&#xff09;是一种虚拟存在的表&#xff0c;视图中的数据并不在数据库中实际存在&#xff0c;行和列数据都来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 视图只存了查询的SQL逻辑&#xff0c;不保存查…

未来已来:揭秘AI数字孪生的建模与计算奥秘

经过数十年的发展&#xff0c;建模和模拟已成为工程和科学的基石。人们针对改进建模的计算方法进行了大量的研究和开发工作。这些计算机模型对系统设计非常有用&#xff0c;可以削减实验和测试的高昂成本。然而在实操中&#xff0c;还需要跟踪系统随时间的演变情况&#xff0c;…

YOLOv11改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解

前言 在目标检测领域,小目标检测一直是一个具有挑战性的问题。YOLO系列算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在YOLOv11中添加小目标检测层,以提高对小目标的检测能力。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、…

stm32入门教程--USART外设 超详细!!!

目录 简介 什么是UART&#xff1f; 什么是USART&#xff1f; 简介 USART&#xff08;Universal Synchron /Asynchronous Receiver /Transmitter&#xff09;通用同步/异步收发器 1、USART是STM32内部集成的硬件外设&#xff0c;可根据数据寄存器的一个字节数据自动生成数据帧…

正则表达式和通配符

文章目录 正则表达式和通配符的区别正则表达式&#xff08;Regex&#xff09;通配符&#xff08;Wildcards&#xff09;总结 正则表达式的概念正则表达式的由来为什么要使用正则表达式 正则表达式的语法组成修饰符元字符\f\b\B 在Linux中的基础正则和扩展正则基础正则(BRE)^$.*…

蓝桥杯第二十场小白入门赛

2.黛玉泡茶 我的思路代码&#xff1a;&#xff08;但我不知道哪有错误&#xff09; #include<iostream> #include<vector> #include<algorithm> using namespace std;int main(){int n,m,k,res1;cin>>n>>m>>k;vector<int>num(n1,0…