当前位置:网站首页>死信队列入门(两个消费者,一个生产者)
死信队列入门(两个消费者,一个生产者)
2022-07-05 20:11:00 【为什么不好好卖蛋饼】
整理一下死信队列。
无法被消费的消息
死信来源
消息TTL过期
队列达到最大长度
队列满了,无法再添加消息到mq
消息被拒绝
50 死信代码架构图
直接交换机 zhangsan 被C1消费
死信交换机 lisi 添加到dead-queue 被C2消费
51 c1 消费者
public class Consumer01{
//普通交换机名称
public static final String NORMAL_EXCHANGE="normal_exchange";
//死信交换机
public static final String DEAD_EXCHANGE="dead_exchange";
//普通队列名称
public static final String NORMAL_QUEUE="normal_queue";
//死信队列名称
public static final String DEAD_QUEUE="dead_queue";
public static void main() throws Exception{
Channel channel=RabbitMqUtil.getChannel();
//声明普通交换机 /死信交换机
channel.exchangeDeclare(NORMAL_EXCHANGE,BuiltinExchangeType.DIRECT);
channel.exchangeDeclare(DEAD_EXCHANGE,BuiltinExchangeType.DIRECT);
//声明普通队列
Map<String ,Object> arguments=new HashMap<>();
//过期时间
//arguments.put("x-message-ttl",1000000);
//正常队列设置过期之后的死信交换机
arguments.put("x-dead-letter-exchange",DEAD_EXCHANGE);
//设置死信RoutingKey
arguments.put("x-dead-letter-routing-key","lisi");
channel.queueDeclare(NORMAL_QUEUE,false,false,false,null);
//死信队列
channel.queueDeclare(DEAD_QUEUE,false,false,false,null);
//绑定普通交换机和队列
channel.queueBind(NORMAL_QUEUE,NORMAL_EXCHANGE,"zhangsan");
//绑定死信交换机和死信队列
channel.queueBind(DEAD_QUEUE,DEAD_EXCHANGE,"lisi");
sout("等待接收消息");
//回调函数
DeliverCallback deliverCallback=(consumerTag,message)->{
sout("Consumer01接收的消息时"+new String(message.getBody(),"UTF-8"));
};
channel.basicConsume(NORMAL_QUEUE,true,deliverCallback,consumeTag->{
});
}
}
52 生产者
public class Producer{
//普通交换机名称
public static final String NORMAL_EXCHANGE="normal_exchange";
public static void main() throws Exception{
Channel channel=RabbitMaUtils.getChannel();
//死信消息
AMQP.BasicProperties=new AMQP.BasicProperties().builder().expration("10000").build();
//死信消息 设置ttl时间
for(int i=1;i<11;i++){
String message="info"+i;
channel.basicPublish(NORMAL_EXCHANGE,"zhangsan",properties,message.getBytes());
}
}
}
停掉消费者,消息转发到死信队列
53 消费者2
这个简单,就是单纯的接收普通队列转发来的消息进行消费。
public class Consumer02{
//死信队列名称
public static final String DEAD_QUEUE="dead_queue";
public static void main() throws Exception{
Channel channel=RabbitMqUtil.getChannel();
sout("等待接收消息");
DeliverCallback deliverCallback=(consumerTag,message)->{
sout("Consumer02接收的消息时"+new String(message.getBody(),"UTF-8"));
};
channel.basicConsume(NORMAL_QUEUE,true,deliverCallback,consumeTag->{
});
}
}
边栏推荐
- Jvmrandom cannot set seeds | problem tracing | source code tracing
- Ffplay document [easy to understand]
- C langue OJ obtenir PE, ACM démarrer OJ
- 2023年深圳市绿色低碳产业扶持计划申报指南
- Debezium series: PostgreSQL loads the correct last submission LSN from the offset
- How to safely and quickly migrate from CentOS to openeuler
- 期货如何网上开户?安不安全?
- [quick start of Digital IC Verification] 1. Talk about Digital IC Verification, understand the contents of the column, and clarify the learning objectives
- 本季度干货导航 | 2022年Q2
- 《乔布斯传》英文原著重点词汇笔记(十二)【 chapter ten & eleven】
猜你喜欢
Let's talk about threadlocalinsecurerandom
计算lnx的一种方式
- Oui. Net Distributed Transaction and Landing Solution
【数字IC验证快速入门】3、数字IC设计全流程介绍
B站UP搭建世界首个纯红石神经网络、基于深度学习动作识别的色情检测、陈天奇《机器学编译MLC》课程进展、AI前沿论文 | ShowMeAI资讯日报 #07.05
Guidelines for application of Shenzhen green and low carbon industry support plan in 2023
.Net分布式事務及落地解决方案
kubernetes资源对象介绍及常用命令(五)-(ConfigMap&Secret)
Build your own website (16)
【数字IC验证快速入门】2、通过一个SoC项目实例,了解SoC的架构,初探数字系统设计流程
随机推荐
Is it safe for Guosen Securities to open an account online?
Wildcard selector
A solution to PHP's inability to convert strings into JSON
2023年深圳市绿色低碳产业扶持计划申报指南
618 "low key" curtain call, how can baiqiushangmei join hands with the brand to cross the "uncertain era"?
Parler de threadlocal insecurerandom
Leetcode skimming: binary tree 12 (all paths of binary tree)
Oracle-表空间管理
Debezium series: idea integrates lexical and grammatical analysis ANTLR, and check the DDL, DML and other statements supported by debezium
Notes on key vocabulary in the English original of the biography of jobs (12) [chapter ten & eleven]
走入并行的世界
C language OJ gets PE, OJ of ACM introduction~
Leetcode skimming: binary tree 16 (path sum)
Unity编辑器扩展 UI控件篇
leetcode刷题:二叉树12(二叉树的所有路径)
Is it safe for CICC fortune to open an account online?
ByteDance dev better technology salon was successfully held, and we joined hands with Huatai to share our experience in improving the efficiency of web research and development
[C language] three implementations of quick sorting and optimization details
leetcode刷题:二叉树13(相同的树)
leetcode刷题:二叉树17(从中序与后序遍历序列构造二叉树)