
注意:普通交换机绑定备份交换机
//声明交换机
@Bean("exchangeA")
public DirectExchange exchangeA() {
Map arguments = new HashMap<>();
arguments.put("alternate", BACKUP_EXCHANGE);
return new DirectExchange(/confirm/i_EXCHANGE_A, true, false, arguments);
}
@Configuration
public class BackupConfig {
//正常交换机
public static final String /confirm/i_EXCHANGE_A = "/confirm/i.exchange.a";
//备份交换机
public static final String BACKUP_EXCHANGE = "backup.exchange";
//正常队列
public static final String /confirm/i_QUEUE_A = "/confirm/i.queue.a";
//备份交换机连接队列1 继续尝试连接队列
public static final String BACKUP_QUEUE_INFO = "backup.queue.info";
//备份交换机连接队列2 发送警告信息
public static final String BACKUP_QUEUE_WARNING = "backup.queue.warn";
//正常的routing_key
public static final String ROUTING_KEY_A = "routing.key.a";
//声明交换机
@Bean("exchangeA")
public DirectExchange exchangeA() {
Map arguments = new HashMap<>();
arguments.put("alternate", BACKUP_EXCHANGE);
return new DirectExchange(/confirm/i_EXCHANGE_A, true, false, arguments);
}
@Bean("backupExchange")
public FanoutExchange backupExchange() {
return new FanoutExchange(BACKUP_EXCHANGE, true, false, null);
}
//声明队列
@Bean("/confirm/iQueueA")
public Queue confirmQueueA() {
return QueueBuilder.durable(/confirm/i_QUEUE_A).build();
}
@Bean("backupQueueInfo")
public Queue backupQueueInfo() {
return QueueBuilder.durable(BACKUP_QUEUE_INFO).build();
}
@Bean("backupQueueWarning")
public Queue backupQueueWarning() {
return QueueBuilder.durable(BACKUP_QUEUE_WARNING).build();
}
//绑定
@Bean
public Binding exchangeABindingConfirmQueueA(@Qualifier("/confirm/iQueueA") Queue /confirm/iQueueA,
@Qualifier("exchangeA") DirectExchange exchangeA) {
return BindingBuilder.bind(/confirm/iQueueA).to(exchangeA).with(ROUTING_KEY_A);
}
@Bean
public Binding backupExchangeBindingBackupQueueInfo(@Qualifier("backupQueueInfo") Queue backupQueueInfo,
@Qualifier("backupExchange") FanoutExchange backupExchange) {
return BindingBuilder.bind(backupQueueInfo).to(backupExchange);
}
@Bean
public Binding backupExchangeBindingBackupQueueWarning(@Qualifier("backupQueueWarning") Queue backupQueueWarning,
@Qualifier("backupExchange") FanoutExchange backupExchange) {
return BindingBuilder.bind(backupQueueWarning).to(backupExchange);
}
}
(二)、消息消费者
@Slf4j
@Component
public class WarningConsumer {
@RabbitListener(queues = BackupConfig.BACKUP_QUEUE_WARNING)
public void warningMessage(Message message) {
String msg = new String(message.getBody());
log.info("报警队列收到了信息:{}", msg);
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)