第九章: 死信队列

什么是死信队列

DLX 。Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就是DLX。


死信队列

消息成为死信的条件

  • 队列长度超出限制
  • 消息过期
  • 消费端拒绝签收并不让消息重返队列

代码演示

  1. 创建正常交换机和正常队列
    @Bean("testExchange")
    public Exchange testExchange() {
        return ExchangeBuilder.topicExchange(TEST_EXCHANGE).durable(true).build();
    }

    @Bean("testQueue")
    public Queue testQueue() {
        return QueueBuilder.durable(TEST_QUEUE).build();
    }
  1. 创建死信交换机和死信队列
    @Bean("dlxExchange")
    public Exchange dlxExchange() {
        return ExchangeBuilder.topicExchange(DLX_EXCHANGE).durable(true).build();
    }

    @Bean("dlxQueue")
    public Queue dlxQueue() {
        return QueueBuilder.durable(DLX_QUEUE).build();
    }
  1. 死信队列和死信交换机绑定
    @Bean
    public Binding bindingDlxQueue(@Qualifier("dlxQueue") Queue queue, @Qualifier("dlxExchange") Exchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("test.dlx").noargs();
    }
  1. 正常队列绑定死信交换机
    @Bean("testQueue")
    public Queue testQueue() {
        return QueueBuilder.durable(TEST_QUEUE)
                .maxLength(5)
                .ttl(10000)
                .deadLetterExchange(DLX_EXCHANGE)
                .deadLetterRoutingKey("test.dlx")
                .build();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容