繁体   English   中英

在 Spring Boot 的应用程序属性中无需提供用户名和密码即可连接到 RabbitMQ

[英]Connect to RabbitMQ without providing username and password in Application properties in Spring Boot

我创建了一个 Spring Boot 应用程序并连接到了 RabbitMqlServer。我在 application.properties 中提供了用户名和密码,如下所示:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5673
spring.rabbitmq.username=password
spring.rabbitmq.password=password

javainuse.rabbitmq.exchange=exchange
javainuse.rabbitmq.queue=queue
javainuse.rabbitmq.routingkey=routingkey

但要求是在不指定 application.properties 中的密码的情况下执行此操作。

我尝试了文档,但他们谈论的是虚拟主机和用户,我不明白。 这是链接: https : //www.rabbitmq.com/access-control.html#seeding

我是 Spring Boot 和 RabbitMq 的新手,任何帮助表示赞赏。 提前致谢。

如果我理解正确,您的任务是使用密码连接到 RabbitMQ,但不应在application.properties文件中指定此密码。

在这种情况下,您可以指定它,例如,通过环境变量SPRING_RABBITMQ_PASSWORD=<your password>

$ export SPRING_RABBITMQ_PASSWORD=<password>
$ java -jar my-rabbitmq-app.jar

# Or
$ SPRING_RABBITMQ_PASSWORD=<password> java -jar my-rabbitmq-app.jar

Spring boot 提供了多种应用配置方式,所以你可能想看一下文档: https : //docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html #boot-features-external-config

如果您想在从某些机密文件中读取用户名/密码时提及代码中的用户名/密码,您可以这样做:

@Bean
ConnectionFactory connectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setUsername(YOUR_USERNAME);
    connectionFactory.setPassword(YOUR_PASSWORD);
    connectionFactory.setHost(YOUR_HOST);
    connectionFactory.setPort(YOUR_PORT);
    return connectionFactory;
}

@Bean
RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
    RabbitTemplate rabbitTemplate = new RabbitTemplate();
    rabbitTemplate.setConnectionFactory(connectionFactory);
    return rabbitTemplate;
}

现在,您可以将 RabbitTemplate 与构建 ConnectionFactory 时提供的凭据一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM