TL;DR 如何以编程方式创建 Spring Boot AMQP 连接工厂?

嘿,

为了连接到我的 RabbitMQ,我将这些添加到我的 Spring Boot 应用程序的 application.properties 文件中:

spring.rabbitmq.host=host
spring.rabbitmq.port=5672
spring.rabbitmq.username=myapp
spring.rabbitmq.password=mypass

根据我的理解,这些值然后用于创建 Spring Boot 的自动配置的 ConnectionFactory ,然后我将其用于:
@Bean
@Conditional(RabbitCondition.class)
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter completedOrderListenerAdapter) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setQueueNames(completedOrderQueueName);
    container.setMessageListener(completedOrderListenerAdapter);
    return container;
}

我希望能够使用来自不是 application.properties 的不同环境文件中的 rabbitMQ 凭据,因此我想以编程方式创建 ConnectionFactory bean。
我如何实现这一目标?

谢谢。

最佳答案

@Bean
public ConnectionFactory connectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setAddresses(address);
    connectionFactory.setUsername(username);
    connectionFactory.setPassword(password);
    return connectionFactory;
}

10-08 16:51