聲明:以下都是自己的一點小想法,因技術(shù)能力有限,不對的地方或有補(bǔ)充的地方請留言
一. RabbitMQ聲明Exchange的兩種方式
1.@bean 方式
@Bean
public FanoutExchange declareExchange() {
return new FanoutExchange(ExchangeName);
}
優(yōu)勢:簡單易寫容易理解
缺點:結(jié)構(gòu)不清晰。當(dāng)聲明的Exchange 過多時不宜管理,想要找到對應(yīng)的Exchange可能要浪費半天時間,改動起來麻煩
2.實現(xiàn)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);
}
優(yōu)勢:結(jié)構(gòu)清晰,每一個聲明都能有效快速的找到。Exchange容易管理
缺點:編碼比第一種大。
二. RabbitMQ發(fā)送消息
@Autowired
private AmqpTemplate amqpTemplate;
// 發(fā)送
amqpTemplate.send(ExchangeName,routingKey, new Message(message.getBytes(), new MessageProperties()));