直接修改一下RabbitMQConfig类就好了,重点是要一个普通的交换机,和一个死信交换机,这里要记住,死信交换机别以为有什么特殊的,你也可以直接理解为就是一个普通的交换机!不多说上代码
package com.example.demo.config; import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; /** * 新商家审核通过->new_merchant_queue -> 死信消息交换机 -> 死信队列 */ @Configuration public class RabbitMQConfig { /** * 死信队列 */ public static final String LOCK_MERCHANT_DEAD_QUEUE = "lock_merchant_dead_queue"; /** * 死信交换机 */ public static final String LOCK_MERCHANT_DEAD_EXCHANGE = "lock_merchant_dead_exchange"; /** * 进入死信队列的路由key */ public static final String LOCK_MERCHANT_ROUTING_KEY = "lock_merchant_routing_key"; /** * 创建死信交换机 * @return */ @Bean public Exchange lockMerchantDeadExchange(){ return new TopicExchange(LOCK_MERCHANT_DEAD_EXCHANGE,true,false); } /** * 创建死信队列 * @return */ @Bean public Queue lockMerchantDeadQueue(){ return QueueBuilder.durable(LOCK_MERCHANT_DEAD_QUEUE).build(); } /** * 绑定死信交换机和死信队列 * @return */ @Bean public Binding lockMerchantBinding(){ return new Binding(LOCK_MERCHANT_DEAD_QUEUE,Binding.DestinationType.QUEUE, LOCK_MERCHANT_DEAD_EXCHANGE,LOCK_MERCHANT_ROUTING_KEY,null); } /** * 普通队列,绑定的个死信交换机 */ public static final String NEW_MERCHANT_QUEUE = "new_merchant_queue"; /** * 普通的topic交换机 */ public static final String NEW_MERCHANT_EXCHANGE = "new_merchant_exchange"; /** * 路由key */ public static final String NEW_MERCHANT_ROUTIING_KEY = "new_merchant_routing_key"; /** * 创建普通交换机 * @return */ @Bean public Exchange newMerchantExchange(){ return new TopicExchange(NEW_MERCHANT_EXCHANGE,true,false); } /** * 创建普通队列 * @return */ @Bean public Queue newMerchantQueue(){ Map<String,Object> args = new HashMap<>(3); //消息过期后,进入到死信交换机 args.put("x-dead-letter-exchange",LOCK_MERCHANT_DEAD_EXCHANGE); //消息过期后,进入到死信交换机的路由key args.put("x-dead-letter-routing-key",LOCK_MERCHANT_ROUTING_KEY); //过期时间,单位毫秒 args.put("x-message-ttl",10000); return QueueBuilder.durable(NEW_MERCHANT_QUEUE).withArguments(args).build(); } /** * 绑定交换机和队列 * @return */ @Bean public Binding newMerchantBinding(){ return new Binding(NEW_MERCHANT_QUEUE,Binding.DestinationType.QUEUE, NEW_MERCHANT_EXCHANGE,NEW_MERCHANT_ROUTIING_KEY,null); } // public static final String EXCHANGE_NAME = "order_exchange"; // // public static final String QUEUE = "order_queue"; // // // /** // * topic 交换机 // * @return // */ // @Bean // public Exchange orderExchange(){ // return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build(); // } // // // /** // * 队列 // * @return // */ // @Bean // public Queue orderQueue(){ // return QueueBuilder.durable(QUEUE).build(); // } // // // /** // * 交换机和队列绑定关系 // */ // @Bean // public Binding orderBinding(Queue queue, Exchange exchange){ // return BindingBuilder.bind(queue).to(exchange).with("order.#").noargs(); // } }
[
会报错,虽然我也不知道为啥!
本文作者为DBC,转载请注明。