直接修改一下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,转载请注明。