RabbitMqConfig.java 2.45 KB
package com.topdraw.mq.config;


import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMqConfig {

    /** 交换机--广播*/
    public static final String UC_EXCHANGE_FANOUT = "uc.fanout";
    public static final String UC_EXCHANGE_DIRECT = "uc.direct";

    /** 队列-- */
    public static final String UC_QUEUE_DIRECT_BBB = "uc.route.key.direct.event.bbb";
    public static final String UC_QUEUE_DIRECT_CCC = "uc.route.key.direct.event.ccc";

    /** 队列-- */
    public static final String UC_QUEUE_FANOUT_IPTV = "uc.fanout.iptv";
    public static final String UC_QUEUE_FANOUT_WEIXIN = "uc.fanout.weixin";


    @Bean
    FanoutExchange ucFanoutExchange(){
        return ExchangeBuilder.fanoutExchange(UC_EXCHANGE_FANOUT).build();
    }

    @Bean
    DirectExchange ucDirectExchange(){
        return ExchangeBuilder.directExchange(UC_EXCHANGE_DIRECT).build();
    }

    @Bean
    Queue ucDirectQueueCCC(){
        return new Queue(UC_QUEUE_DIRECT_CCC);
    }

    @Bean
    Queue ucDirectQueueBBB(){
        return new Queue(UC_QUEUE_DIRECT_BBB);
    }

    @Bean
    Binding directExchangeBindingBBB(DirectExchange directExchange , Queue ucDirectQueueBBB) {
        BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
                BindingBuilder.bind(ucDirectQueueBBB).to(directExchange);
        return directExchangeRoutingKeyConfigurer.with(UC_QUEUE_DIRECT_BBB);
    }

    @Bean
    Binding directExchangeBindingCCC(DirectExchange directExchange , Queue ucDirectQueueCCC) {
        BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
                BindingBuilder.bind(ucDirectQueueCCC).to(directExchange);
        return directExchangeRoutingKeyConfigurer.with(UC_QUEUE_DIRECT_CCC);
    }

    @Bean
    Queue ucFanoutQueueIptv(){
        return new Queue(UC_QUEUE_FANOUT_IPTV);
    }

    @Bean
    Queue ucFanoutQueueWeiXin(){
        return new Queue(UC_QUEUE_FANOUT_WEIXIN);
    }

    @Bean
    Binding fanoutExchangeBindingIptv(FanoutExchange ucFanoutExchange , Queue ucFanoutQueueIptv) {
        return BindingBuilder.bind(ucFanoutQueueIptv).to(ucFanoutExchange);
    }

    @Bean
    Binding fanoutExchangeBindingWeiXin(FanoutExchange ucFanoutExchange , Queue ucFanoutQueueWeiXin) {
        return BindingBuilder.bind(ucFanoutQueueWeiXin).to(ucFanoutExchange);
    }


}