最近研究RabbitMQ從本地獲取配置,主要場景是RabbitMQ的連接配置如:ip地址這些需要從外部的配置服務器獲取。面對這個問題,有兩個解決方案,一個是用RabbitMQ原生的連接方式,但是如果使用了spring boot這個方法就有點笨拙,所以推薦使用重寫RabbitMQ的工廠類ConnectionFactory類來進行連接RabbitMQ。
public class RabbitmqConfig { @Bean public ConnectionFactory connectionFactory() throws Exception { //創建工廠類 CachingConnectionFactory cachingConnectionFactory=new CachingConnectionFactory(); //用戶名 cachingConnectionFactory.setUsername("gust"); //密碼 cachingConnectionFactory.setPassword("gust"); //rabbitMQ地址 cachingConnectionFactory.setHost("127.0.0.1"); //rabbitMQ端口 cachingConnectionFactory.setPort(Integer.parseInt(5672)); cachingConnectionFactory.setCacheMode(CachingConnectionFactory.CacheMode.CHANNEL); return cachingConnectionFactory; } /** * 將配置好的信息放入 * @param connectionFactory * @return */ @Bean public RabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory){ SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); return factory; } /** * 自動聲明隊列 * @param connectionFactory * @return */ @Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory){ RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); rabbitAdmin.setAutoStartup(true); return rabbitAdmin; } }