RabbitMqConfig.java 5.33 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 {

    /** 路由(事件)--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";

    @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("139.196.145.150");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("Topdraw1qaz");
        connectionFactory.setVirtualHost("member_center");*/

        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("139.196.192.242");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("member_center");
        connectionFactory.setPassword("Tjlh@2021");
        connectionFactory.setVirtualHost("member_center");*/
        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);
    }
}