簡體   English   中英

spring boot 無法連接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. 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

是的,用戶 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連接

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

Spring 屬性包括 RabbitMQ 的特定設置。 嘗試用下面的替換你的 ActiveMQ 配置。

例子:

spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest

嘗試在 spring boot properties 中更改您的 rabbitMQ 配置:

spring.rabbitmq.host = 127.0.0.1
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest

使用 springboot 的默認設置是好的,但如果我們想將外部兔子實例添加到 spring 容器,那么我們應該遵循如下

應用程序.yml

rabbitmq:
  host: 'hostname'
  vhost: 'vhostname'
  user: 'userName'
  password: 'passwd'
  port: 5672

配置類

        @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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM