RabbitMQ使用三----进阶

本文详细介绍了RabbitMQ的高级特性,包括死信队列的创建与测试,延迟队列的原理及实现,消息幂等性的保障策略,以及RabbitMQ集群的搭建,包括简单集群和镜像集群模式。最后讨论了使用HaProxy进行RabbitMQ集群的负载均衡配置。
摘要由CSDN通过智能技术生成

一、死信队列(dead_queue)

1、什么使死信队列?
	死信队列存储死信消息,什么使死信消息(dead_message):
		(1)、在队列中超时的消息
		(2)、队列长度到达上限后,再存入的信息
		(3)、消费端拒接的消息。basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;
2、死信消息流转过程:
	生产者将普通消息传入到普通交换机,普通交换机将消息分发到普通队列,当普通队列中的消息符合上述三个场景时,并不把消息彻底删除,而是再交给死信交换机,让死信交换机将死信消息转发到死信队列。

死信交换机也是普通的交换机,只不过是用来转发死信消息,而被叫做死信交换机

3、操作
普通队列要绑定普通交换机和死信交换机。
给队列设置一下参数,绑定死信交换机:x-dead-letter-exchange和x-dead-letter-routing-key

运行图:
在这里插入图片描述

使用springboot创建交换机和队列,使用浏览器界面也可以:

@Configuration
public class RabbitConfig {
   
    private final String EXCHANGE="exchange";
    private final String DEAD_EXCHANGE="dead_exchange";
    private final String QUEUE="queue";
    private final String DEAD_QUEUE="dead_queue";

//    创建一个普通交换机
    @Bean
    public Exchange exchange(){
   
       return ExchangeBuilder.directExchange(EXCHANGE).build();
    }

//    创建一个私信交换机
    @Bean
    public Exchange dead_exchange(){
   
        return ExchangeBuilder.directExchange(DEAD_EXCHANGE).build();
    }

//    创建一个普通队列
    @Bean
    public Queue queue(){
   
        return QueueBuilder
                .durable(QUEUE)
                .withArgument("x-message-ttl",20000)
//                队列长度为10
                .withArgument("x-max-length",10)
//                绑定死信交换机
                .withArgument("x-dead-letter-exchange",DEAD_EXCHANGE)
//                绑定死信交换机的routingkey为error
                .withArgument("x-dead-letter-routing-key","error")
                .build();
    }

//    创建一个死信队列
    @Bean
    public Queue dead_queue(){
   
        return QueueBuilder
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值