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

(一)、配置文件

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

    //声明交换机
    @Bean("exchangeA")
    public DirectExchange exchangeA() {
        Map<String, Object> arguments = new HashMap<>();
        arguments.put("alternate", BACKUP_EXCHANGE);
        return new DirectExchange(CONFIRM_EXCHANGE_A, true, false, arguments);
    }
/**
 * @author Mr.simple
 * @description  利用备份交换机达到消息回退的功能   备份交换机的优先级比队列回退的要高一些
 * @time 2021/12/23  12:01
 */
@Configuration
public class BackupConfig {
    //正常交换机
    public static final String CONFIRM_EXCHANGE_A = "confirm.exchange.a";
    //备份交换机
    public static final String BACKUP_EXCHANGE = "backup.exchange";
    //正常队列
    public static final String CONFIRM_QUEUE_A = "confirm.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<String, Object> arguments = new HashMap<>();
        arguments.put("alternate", BACKUP_EXCHANGE);
        return new DirectExchange(CONFIRM_EXCHANGE_A, true, false, arguments);
    }
    @Bean("backupExchange")
    public FanoutExchange backupExchange() {
        return new FanoutExchange(BACKUP_EXCHANGE, true, false, null);
    }

    //声明队列
    @Bean("confirmQueueA")
    public Queue confirmQueueA() {
        return QueueBuilder.durable(CONFIRM_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("confirmQueueA") Queue confirmQueueA,
                                                 @Qualifier("exchangeA") DirectExchange exchangeA) {
        return BindingBuilder.bind(confirmQueueA).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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值