spring开机无法连接到rabbitmq
spring boot cannot connect to rabbitmq
我有一个像这样的 RabbitMQ 服务器
当我尝试通过 Spring Boot amqp 连接到此服务器时,我看到 com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
我的配置是这个
# Message
spring.activemq.broker-url=tcp://127.0.0.1:5672
spring.activemq.user=test
spring.activemq.password=test
是的,用户测试可以访问 / 上的虚拟主机,是的,我可以在 RabbitMQ GUI 上使用 test/test 登录
编辑
查看rabbitmq日志,我看到了这个
{handshake_error,starting,0,
{amqp_error,access_refused,
"PLAIN login refused: user 'guest' - invalid credentials",
'connection.start_ok'}}
似乎 Spring 忽略了我的配置并尝试连接 guest
Spring 属性包括 RabbitMQ 的特定设置。尝试用以下内容替换您的 ActiveMQ 配置。
示例:
spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest
src/main/resources/application.yml
spring:
rabbitmq:
user: guest
password: guest
host: rabbitmq
port: 5672
virtual-host: someVirtualHost
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
使用 springboot 的默认设置很好,但是如果我们想将外部 rabbit 实例添加到 spring 容器中,那么我们应该遵循以下
application.yml
rabbitmq:
host: 'hostname'
vhost: 'vhostname'
user: 'userName'
password: 'passwd'
port: 5672
配置class
@Configuration
public class RabbitConfig {
@Value("${rabbitmq.host}")
private String host;
@Value("${rabbitmq.vhost}")
private String vhost;
@Value("${rabbitmq.user}")
private String user;
@Value("${rabbitmq.password}")
private String password;
@Value("${rabbitmq.port}")
private int port;
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory factory = new CachingConnectionFactory();
System.out.println("rmqhost is " + host);
factory.setHost(host);
factory.setVirtualHost(vhost);
factory.setUsername(user);
factory.setPassword(password);
factory.setPort(port);
return factory;
}
@Bean
public RabbitAdmin rabbitAdmin() {
return new RabbitAdmin(connectionFactory());
}
}
我们可以为 rabbitmqtemplate 或 rabbitmqListener 创建 Bean
尝试在 spring 引导属性中更改 rabbitMQ 配置:
spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest
我有一个像这样的 RabbitMQ 服务器
当我尝试通过 Spring Boot amqp 连接到此服务器时,我看到 com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
我的配置是这个
# Message
spring.activemq.broker-url=tcp://127.0.0.1:5672
spring.activemq.user=test
spring.activemq.password=test
是的,用户测试可以访问 / 上的虚拟主机,是的,我可以在 RabbitMQ GUI 上使用 test/test 登录
编辑
查看rabbitmq日志,我看到了这个
{handshake_error,starting,0,
{amqp_error,access_refused,
"PLAIN login refused: user 'guest' - invalid credentials",
'connection.start_ok'}}
似乎 Spring 忽略了我的配置并尝试连接 guest
Spring 属性包括 RabbitMQ 的特定设置。尝试用以下内容替换您的 ActiveMQ 配置。
示例:
spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest
src/main/resources/application.yml
spring:
rabbitmq:
user: guest
password: guest
host: rabbitmq
port: 5672
virtual-host: someVirtualHost
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
使用 springboot 的默认设置很好,但是如果我们想将外部 rabbit 实例添加到 spring 容器中,那么我们应该遵循以下
application.yml
rabbitmq:
host: 'hostname'
vhost: 'vhostname'
user: 'userName'
password: 'passwd'
port: 5672
配置class
@Configuration
public class RabbitConfig {
@Value("${rabbitmq.host}")
private String host;
@Value("${rabbitmq.vhost}")
private String vhost;
@Value("${rabbitmq.user}")
private String user;
@Value("${rabbitmq.password}")
private String password;
@Value("${rabbitmq.port}")
private int port;
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory factory = new CachingConnectionFactory();
System.out.println("rmqhost is " + host);
factory.setHost(host);
factory.setVirtualHost(vhost);
factory.setUsername(user);
factory.setPassword(password);
factory.setPort(port);
return factory;
}
@Bean
public RabbitAdmin rabbitAdmin() {
return new RabbitAdmin(connectionFactory());
}
}
我们可以为 rabbitmqtemplate 或 rabbitmqListener 创建 Bean
尝试在 spring 引导属性中更改 rabbitMQ 配置:
spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest