Springboot配置一個服務連多個IP的RabbitMQ

直接上代碼,跑不通的請留言

調用MQ接口

    //獲取bean
    @Resource(name="psyRabbitTemplate")
    private AmqpTemplate psyRabbitTemplate;
    //獲取bean
    @Resource(name="deviceRabbitTemplate")
    private AmqpTemplate deviceRabbitTemplate;

RabbitMQConfig.java

     /*
    定義連接
     */
    @Bean(name = "deviceConnectionFactory")
    public ConnectionFactory daHuaConnectionFactory(
            @Value("${spring.rabbitmq.second.host}") String host,
            @Value("${spring.rabbitmq.second.port}") int port,
            @Value("${spring.rabbitmq.second.username}") String username,
            @Value("${spring.rabbitmq.second.password}") String password,
            @Value("${spring.rabbitmq.second.virtual-host}") String virtual
    ) {
        return connectionFactory(host, port, username, password,virtual);
    }



    public CachingConnectionFactory connectionFactory(String host, int port, String username, String password,String virtual){
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtual);
//          connectionFactory.setVirtualHost(virtual_host);
        return connectionFactory;
    }

    @Bean(name = "psyRabbitTemplate")
    @Primary
    public RabbitTemplate myRabbitTemplate(
            @Qualifier("psyConnectionFactory") ConnectionFactory connectionFactory
    ) {
        RabbitTemplate psyRabbitTemplate = new RabbitTemplate(connectionFactory);
        return psyRabbitTemplate;
    }

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

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

    @Bean(name = "deviceFactory")
    public SimpleRabbitListenerContainerFactory secondFactory(
            SimpleRabbitListenerContainerFactoryConfigurer configurer,
            @Qualifier("deviceConnectionFactory") ConnectionFactory connectionFactory
    ) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        configurer.configure(factory, connectionFactory);
        return factory;
    }


    /*
    聲明交換機 amq.topic topic類型的,其他類型的直接改TopicExchange
     */
    @Bean
    public TopicExchange basicExchange(){
        return new TopicExchange("amq.topic", true,false);
    }

    /*
    聲明消息隊列 啓動創建,停止自動刪除
     */
    @Bean(name = "basicQueue")
    public Queue basicQueue(){
        return new Queue("acquire-alarm-volume", false,true,true);
    }

    /*
    隊列綁定交換機 *.*.*.*.*.*爲rountingkey
     */
    @Bean
    public Binding basicBinding(){
        return BindingBuilder.bind(basicQueue()).to(basicExchange()).with("*.*.*.*.*.*");}

application.yml

  rabbitmq:
    first:
      host: 192.168.0.134
      port: 5672
      username: admin
      password: admin
      virtual-host: /psy
    second:
      host: 192.168.0.160
      port: 5672
      username: admin
      password: pl,okm123
      virtual-host: /
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章