Rabbit MQ의 ConnectionFactory를 아래처럼 연결의 각 프로퍼티를 지정해주고,
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("test");
factory.setPassword("password");
factory.setVirtualHost("vhost");
factory.setHost("localhost");
factory.setPort(5672);
새로운 커넥션을 생성하면 아래 메시지와 함께 예외가 발생한다.
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
검색해보니 3.3.1 버전부터 guest 계정으로 루프백 주소 이외에는 연결할 수 없도록 바뀌었다고 하는데, guest 계정을 사용한 것도 아니고, 다른 호스트도 아닌데 인증에 실패했다.
조금 방법을 바꿔서 각 프로퍼티를 세터로 설정하는 대신 factory.setUri()메서드를 이용해 연결 설정을 하고 새로운 커넥션을 생성하면 정상적으로 연결된다. 아래와 같은 모습이다.
String urlEncodedPassword = URLEncoder.encode("test", "UTF-8");
factory.setUri("amqp://test:" + urlEncodedPassword + "@localhost:5672/vhost");
빠진 연결 정보가 없는데도(굳이 따지자면 amqp 스키마 정도..?) URI를 통해서는 연결이 되고, 프로퍼티를 설정해주었을 때는 연결이 되지 않는다.
이유를 알 수 없어서 ConnectionFactory의 setUri() 메서드의 소스코드를 봐도, 명확한 이유는 알 수 없었다.
Uri 객체로부터 host, port, username, password, virtualhost를 가져와서 동일하게 세터를 호출하여 값을 설정한다.
문제가 고쳐지긴 했지만 찝찝하다. 뭘 잘못하고 있는걸까
----- 추가
연결이 되지 않은 이유는... 패스워드에 오타가 있었습니다. 하하;;
3.3.1 버전부터 guest 계정으로는 localhost만 접속할 수 있다고 합니다. 링크를 참고하세요. http://www.rabbitmq.com/access-control.html#loopback-users
'밤을 지새다 > Error Notes' 카테고리의 다른 글
Hibernate 4.3.5.Final 버전의 버그 (0) | 2015.07.07 |
---|---|
lombok 설정이 안된다.. (0) | 2015.05.12 |
Spring JSON message converter 삽질기.. (1) | 2015.05.12 |
Dynamic Web - Spring 3.0 DispatcherServlet 세팅 (0) | 2012.08.14 |
Spring + iBatis 연동 중 에러 발생 (0) | 2012.08.09 |