springBoot整合多个rabbitMQ(二)

springBoot可以配置多个rabbitMQ服务器使用,只需要在使用时指定使用的实例就行,其他的与使用单个配置没有区别

一,配置文件:

spring.rabbitmq.first.host=10.10.1.203
spring.rabbitmq.first.port=5672
spring.rabbitmq.first.username=guest
spring.rabbitmq.first.password=guest
spring.rabbitmq.first.virtual-host=/
# spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.primary.host=10.10.1.115
spring.rabbitmq.primary.port=5672
spring.rabbitmq.primary.username=guest
spring.rabbitmq.primary.password=guest
spring.rabbitmq.primary.virtual-host=/

二,代码配置
    

@Primary:不指定时使用默认配置
package com.koala.console.common.configuration;

import com.koala.console.apps.mclz.service.impl.TailWindServiceImpl;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
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.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.beans.factory.annotation.Autowired;
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 {


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

    @Bean(name = "primaryConnectionFactory")
    public ConnectionFactory primaryPayConnectionFactory(
            @Value("${spring.rabbitmq.primary.host}") String host,
            @Value("${spring.rabbitmq.primary.port}") int port,
            @Value("${spring.rabbitmq.primary.username}") String username,
            @Value("${spring.rabbitmq.primary.password}") String password,
            @Value("${spring.rabbitmq.primary.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;
    }

    @Primary
    @Bean(name = "secondRabbitTemplate")
    public RabbitTemplate firstRabbitTemplate(@Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitTemplate secondRabbitTemplate = new RabbitTemplate(connectionFactory);
        return secondRabbitTemplate;
    }

    @Bean(name = "primaryRabbitTemplate")
    public RabbitTemplate secondRabbitTemplate(@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitTemplate primaryRabbitTemplate = new RabbitTemplate(connectionFactory);
        return primaryRabbitTemplate;
    }

    @Primary
    @Bean(name = "secondContainerFactory")
    public SimpleRabbitListenerContainerFactory hospSyncFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("secondConnectionFactory")ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        configurer.configure(factory,connectionFactory);
        return factory;
    }


    @Bean(name = "primaryContainerFactory")
    public SimpleRabbitListenerContainerFactory hPayFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer,@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        configurer.configure(factory,connectionFactory);
        return factory;
    }

    @Primary
    @Bean(name = "secondRabbitAdmin")
    public RabbitAdmin rabbitAdmin(@Qualifier("secondConnectionFactory")ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        return rabbitAdmin;
    }

    @Bean(name = "primaryRabbitAdmin")
    public RabbitAdmin primaryRabbitAdmin(@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        return rabbitAdmin;
    }

    @Primary
    @Bean(name = "secondSimpleMessageListenerContainer")
    public SimpleMessageListenerContainer messageListenerContainer(@Qualifier("secondConnectionFactory")ConnectionFactory connectionFactory) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
        return container;
    }

    @Bean(name = "primarySimpleMessageListenerContainer")
    public SimpleMessageListenerContainer primaryMessageListenerContainer(@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
        container.setDefaultRequeueRejected(false);
        container.setAcknowledgeMode(AcknowledgeMode.AUTO);
        container.start();
        return container;
    }


}

三,使用

@Slf4j
@Component
public class RabbitMQProducerImpl {

    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Autowired
    @Qualifier("primaryRabbitTemplate")
    private RabbitTemplate primaryRabbitTemplate;
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值