springboot集成多个rabbitmq
springboot版本:1.5.19.RELEASE
Gradle版本:4.10
Gradle的build.gradle中增加引入
compile('org.springframework.boot:spring-boot-starter-amqp')application.yaml中增加配置
buddie:
rabbitmq:
consume:
host: 127.0.0.1
port: 5672
username: admin
password: admin
produce:
host: 127.0.0.1
port: 5674
username: admin
password: admin增加配置类,配置我们的两个rabbitMQ:
import org.springframework.amqp.core.*;
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.RabbitTemplate;
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 RabbitConfig {
public ConnectionFactory rabbitConfiguration(String host, int port, String username, String password) {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean("consumeRabbitConnectionFactory")
@Primary
public ConnectionFactory innerRabbitConfiguration(@Value("${buddie.rabbitmq.consume.host}") String host,
@Value("${buddie.rabbitmq.consume.port}") int port,
@Value("${buddie.rabbitmq.consume.username}") String username,
@Value("${buddie.rabbitmq.consume.password}") String password) {
return this.rabbitConfiguration(host, port, username, password);
}
@Bean("consumeRabbitTemplate")
@Primary
public RabbitTemplate consumeRabbitTemplate(
@Qualifier("consumeRabbitConnectionFactory") ConnectionFactory connectionFactory
) {
return new RabbitTemplate(connectionFactory);
}
public SimpleRabbitListenerContainerFactory rabbitFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
@Bean("consumeRabbitFactory")
public SimpleRabbitListenerContainerFactory consumeRabbitFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("consumeRabbitConnectionFactory") ConnectionFactory connectionFactory
) {
return this.rabbitFactory(configurer, connectionFactory);
}
@Bean("produceRabbitConnectionFactory")
public ConnectionFactory outerRabbitConfiguration(@Value("${buddie.rabbitmq.produce.host}") String host,
@Value("${buddie.rabbitmq.produce.port}") int port,
@Value("${buddie.rabbitmq.produce.username}") String username,
@Value("${buddie.rabbitmq.produce.password}") String password) {
return this.rabbitConfiguration(host, port, username, password);
}
@Bean("produceRabbitTemplate")
public RabbitTemplate produceRabbitTemplate(
@Qualifier("produceRabbitConnectionFactory") ConnectionFactory connectionFactory
) {
return new RabbitTemplate(connectionFactory);
}
@Bean("produceRabbitFactory")
public SimpleRabbitListenerContainerFactory outerRabbitFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("produceRabbitConnectionFactory") ConnectionFactory connectionFactory
) {
return this.rabbitFactory(configurer, connectionFactory);
}
@Bean
public Queue topicQueueCreate() {
return new Queue("topic.task");
}
@Bean
public TopicExchange topicExchange() {
return new TopicExchange("topic.exchange");
}
@Bean
public Binding topicBindingCreate() {
return BindingBuilder.bind(this.topicQueueCreate()).to(this.topicExchange()).with("topic.task.#");
}
}注意事项:
做为生产者,在启服时,并不会对连接rabbitMQ,更不会去创建Topic,Queue及绑定。
而作为消费者,在启服后,会连接rabbitMQ,并检查Queue是否有消息可消费。
所以应该将消费的rabbitMQ配置,加上@Primary,否则在rabbitMQ上没有对应的Queue时,报错,无法启动服务器
相关推荐
Jaystrong 2020-08-02
gaogaorimu 2020-07-18
FanErZong 2020-07-18
liwf 2020-07-09
thatway 2020-06-28
糊一笑 2020-06-27
tangjianft 2020-06-25
86284851 2020-06-16
LUOPING0 2020-06-16
sshong 2020-06-12
wys 2020-06-10
mmyCSDN 2020-05-28
fanhuasijin 2020-05-28
liuyong00 2020-05-19