RabbitMqConfig.java 5.83 KB
package com.topdraw.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

@Configuration
public class RabbitMqConfig {


    //////////////////////////////////////////////////////// OMO 小屏///////////////////////////////////////////////////////////////

    /** 获取带参二维码(大屏->小屏) */
    public static final String GET_QR_CODE_QUEUE = "queue.qrCode.get";

    /** 删除全部收藏队列(大屏->小屏) */
    public static final String COLLECTION_DELETE_ALL_QUEUE = "queue.collection.deleteall";

    /**  添加收藏队列(大屏->小屏) */
    public static final String COLLECTION_ADD_QUEUE = "queue.collection.add";

    /** 删除收藏队列(大屏->小屏) */
    public static final String COLLECTION_DELETE_QUEUE = "queue.collection.delete";

    /** 微信侧 公众号关注与取消关注 */
    public static final String WEIXIN_SUBORUNSUB_QUEUE = "weixin.subOrUnSub.queue";

    //////////////////////////////////////////////////////// 重数 ///////////////////////////////////////////////////////////////

    /** 路由(事件)--direct route.key*/
    // 事件,uc-gateway
    public static final String UC_ROUTE_KEY_DIRECT_EVENT_AAA = "uc.route.key.direct.event.aaa";
    // uc-service 服务侧
    public static final String UC_ROUTE_KEY_DIRECT_EVENT_BBB = "uc.route.key.direct.event.bbb";
    // uc-service 管理侧
    public static final String UC_ROUTE_KEY_DIRECT_EVENT_CCC = "uc.route.key.direct.event.ccc";

    public static final String ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT = "engine.iptv.consumer.member.direct";

    @Value("${mutil-mq.service.host}")
    private String serviceHost;
    @Value("${mutil-mq.service.port}")
    private Integer servicePort;
    @Value("${mutil-mq.service.username}")
    private String serviceUserName;
    @Value("${mutil-mq.service.password}")
    private String servicePassword;
    @Value("${mutil-mq.service.virtual-host}")
    private String serviceVirtualHost;

    @Bean(name = "serviceConnectionFactory")
    @Primary
    public ConnectionFactory serviceConnectionFactory(){
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(serviceHost);
        connectionFactory.setPort(servicePort);
        connectionFactory.setUsername(serviceUserName);
        connectionFactory.setPassword(servicePassword);
        connectionFactory.setVirtualHost(serviceVirtualHost);
        return connectionFactory;
    }

    @Bean(name = "serviceRabbitListenerContainerFactory")
    @Primary
    public RabbitListenerContainerFactory userCenterRabbitListenerContainerFactory(
            SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer,
            @Qualifier("serviceConnectionFactory") ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        containerFactoryConfigurer.configure(factory,connectionFactory);
        return factory;
    }

    @Bean(name = "serviceRabbitTemplate")
    public RabbitTemplate userCenterRabbitTemplate(ConnectionFactory ucServiceConnectionFactory){
        RabbitTemplate u = new RabbitTemplate(ucServiceConnectionFactory);
        return u;
    }



    @Value("${mutil-mq.management.host}")
    private String managementHost;
    @Value("${mutil-mq.management.port}")
    private Integer managementPort;
    @Value("${mutil-mq.management.username}")
    private String managementUserName;
    @Value("${mutil-mq.management.password}")
    private String managementPassword;
    @Value("${mutil-mq.management.virtual-host}")
    private String managementVirtualHost;

    @Bean(name = "managementConnectionFactory")
    public ConnectionFactory managementConnectionFactory(){
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(managementHost);
        connectionFactory.setPort(managementPort);
        connectionFactory.setUsername(managementUserName);
        connectionFactory.setPassword(managementPassword);
        connectionFactory.setVirtualHost(managementVirtualHost);
        return connectionFactory;
    }

    @Bean(name = "managementRabbitListenerContainerFactory")
    public RabbitListenerContainerFactory memberServiceRabbitListenerContainerFactory(
            SimpleRabbitListenerContainerFactoryConfigurer containerFactoryConfigurer,
            @Qualifier("managementConnectionFactory") ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        containerFactoryConfigurer.configure(factory,connectionFactory);
        return factory;
    }

    @Bean(name = "managementRabbitTemplate")
    public RabbitTemplate memberServiceRabbitTemplate(ConnectionFactory ucGatewayConnectionFactory){
        RabbitTemplate u = new RabbitTemplate(ucGatewayConnectionFactory);
        return u;
    }

    /**
     * 处理事件
     * @return org.springframework.amqp.core.Queue
     * @author XiangHan
     * @date 2021/9/7 10:19 上午
     */
    @Bean
    public Queue eventDirect() {
        return new Queue(UC_ROUTE_KEY_DIRECT_EVENT_AAA);
    }


}