springboot 使用 多 rabbitmq 源

# rabbitmq配置信息
v1.spring.rabbitmq.host=192.168.84.8
v1.spring.rabbitmq.port=5672
v2.spring.rabbitmq.username=guest
v2.spring.rabbitmq.password=guest
v1.spring.rabbitmq.virtual-host=/
v1.spring.rabbitmq.listener.type=simple
v1.spring.rabbitmq.listener.simple.acknowledge-mode=AUTO

v2.spring.rabbitmq.host=192.168.84.9
v2.spring.rabbitmq.port=5672
v2.spring.rabbitmq.username=guest
v2.spring.rabbitmq.password=guest
v2.spring.rabbitmq.virtual-host=/
v2.spring.rabbitmq.listener.type=simple
v2.spring.rabbitmq.listener.simple.acknowledge-mode=AUTO

import org.springframework.amqp.core.AcknowledgeMode;
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.RabbitAdmin;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;

/**
 * @author 7788
 */
@Configuration
@Profile("pro")
public class MultipleRabbitMQConfig {

    // =======================================================================内网1=============================

    @Bean(name = "v1ConnectionFactory")
    @Primary
    public CachingConnectionFactory publicConnectionFactory(
            @Value("${v1.spring.rabbitmq.host}") String host,
            @Value("${v1.spring.rabbitmq.port}") int port,
            @Value("${v1.spring.rabbitmq.username}") String username,
            @Value("${v1.spring.rabbitmq.password}") String password,
            @Value("${v1.spring.rabbitmq.virtual-host}") String virtualHost) {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtualHost);
        return connectionFactory;
    }


    @Bean(name = "v1ContainerFactory")
    @Primary
    public SimpleRabbitListenerContainerFactory insMessageListenerContainer(@Qualifier("v1ConnectionFactory") ConnectionFactory connectionFactory,
                                                                            @Value("${v1.spring.rabbitmq.listener.simple.acknowledge-mode}") String acknowledge) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setAcknowledgeMode(AcknowledgeMode.valueOf(acknowledge.toUpperCase()));
        return factory;
    }

    @Bean(name = "v1RabbitAdmin")
    @Primary
    public RabbitAdmin publicRabbitAdmin(@Qualifier("v1ConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }

    // =================================================================内网2==========================================

    @Bean(name = "v2ConnectionFactory")
    public CachingConnectionFactory hospSyncConnectionFactory(
            @Value("${v2.spring.rabbitmq.host}") String host,
            @Value("${v2.spring.rabbitmq.port}") int port,
            @Value("${v2.spring.rabbitmq.username}") String username,
            @Value("${v2.spring.rabbitmq.password}") String password,
            @Value("${v2.spring.rabbitmq.virtual-host}") String virtualHost) {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtualHost);
        return connectionFactory;
    }


    @Bean(name = "v2ContainerFactory")
    public SimpleRabbitListenerContainerFactory hospSyncFactory(@Qualifier("v2ConnectionFactory") ConnectionFactory connectionFactory,
                                                                @Value("${v2.spring.rabbitmq.listener.simple.acknowledge-mode}") String acknowledge) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setAcknowledgeMode(AcknowledgeMode.valueOf(acknowledge.toUpperCase()));
        return factory;
    }

    @Bean(name = "v2RabbitAdmin")
    public RabbitAdmin iqianzhanRabbitAdmin(@Qualifier("v2ConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }


}


import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * @author 7788
 */
@Configuration
@Profile("pro")
public class RabbitTopicBind {
    @Resource(name = "v2RabbitAdmin")
    private RabbitAdmin v2RabbitAdmin;

    @Resource(name = "v1RabbitAdmin")
    private RabbitAdmin v1RabbitAdmin;

    @PostConstruct
    public void SectionInit() {
        v1RabbitAdmin.declareExchange(new TopicExchange("iot.12.sw", true, false));
        v1RabbitAdmin.declareQueue(new Queue("section", true));
        v1RabbitAdmin.declareBinding(
                BindingBuilder.bind(new Queue("section", true))
                        .to(new TopicExchange("iot.12.sw", true, false)).with("123456"));
    }

    @PostConstruct
    public void gateInit() {
        v2RabbitAdmin.declareExchange(new TopicExchange("iot.12.gate", true, false));
        v2RabbitAdmin.declareQueue(new Queue("gate", true));
        v2RabbitAdmin.declareBinding(
                BindingBuilder.bind(new Queue("gate", true))
                        .to(new TopicExchange("iot.12.gate", true, false)).with("123456"));
    }


}

 @RabbitListener(queues = "section", containerFactory = "v1ContainerFactory")
    public void gate(Object obj, Channel channel, Message message) {
        log.info("section接收到消息:" + obj);
        String deviceId = null;
        //发送通知
        ledController.sendInfo(null, "12", deviceId);
    }
 @RabbitListener(queues = "gate", containerFactory = "v2ContainerFactory")
    public void gate(Object obj, Channel channel, Message message) {
        log.info("gate接收到消息:" + obj);
        String deviceId = null;
        //发送通知
        ledController.sendInfo(null, "12", deviceId);
    }
posted @ 2021-12-27 17:58  qwer78  阅读(218)  评论(0)    收藏  举报