# 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);
}