声明:以下都是自己的一点小想法,因技术能力有限,不对的地方或有补充的地方请留言
一. RabbitMQ声明Exchange的两种方式
1.@bean 方式
@Bean
public FanoutExchange declareExchange() {
return new FanoutExchange(ExchangeName);
}
优势:简单易写容易理解
缺点:结构不清晰。当声明的Exchange 过多时不宜管理,想要找到对应的Exchange可能要浪费半天时间,改动起来麻烦
2.实现ApplicationRunner
@Component
public class Ignition implements ApplicationRunner {
private AmqpAdmin amqpAdmin;
@Autowired
public Ignition(AmqpAdmin amqpAdmin) {
this.amqpAdmin = amqpAdmin;
}
@Override
public void run(ApplicationArguments args) throws Exception {
// 声明Exchange
declareExchange();
}
/**
* 声明Exchange
*/
private void declareExchange() {
TopicExchange exchange = new TopicExchange(ExchangeName, true, false);
amqpAdmin.declareExchange(exchange);
}
优势:结构清晰,每一个声明都能有效快速的找到。Exchange容易管理
缺点:编码比第一种大。
二. RabbitMQ发送消息
@Autowired
private AmqpTemplate amqpTemplate;
// 发送
amqpTemplate.send(ExchangeName,routingKey, new Message(message.getBytes(), new MessageProperties()));