RabbitMQ整合springboot(四)---备份交换机

RabbitMQ整合springboot(四)---备份交换机,第1张

RabbitMQ整合springboot(四)---备份交换机 (一)、配置文件

注意:普通交换机绑定备份交换机

    //声明交换机
    @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);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5687498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存