>  기사  >  Spring amqp - 호환 가능한 인증 메커니즘을 찾을 수 없음 - 서버 제공

Spring amqp - 호환 가능한 인증 메커니즘을 찾을 수 없음 - 서버 제공

PHPz
PHPz앞으로
2024-02-14 08:50:091197검색

php 편집기 Xinyi가 오늘 AMQP 프로토콜을 기반으로 한 메시징 프레임워크인 Spring AMQP를 소개합니다. 그러나 때때로 Spring AMQP를 사용할 때 "호환 가능한 인증 메커니즘을 찾을 수 없습니다 - 서버 제공"이라는 오류가 발생할 수 있습니다. 이 오류 메시지는 혼란스러울 수 있으며 해결 방법을 알 수 없습니다. 다음에는 이 오류가 발생하는 원인을 자세히 설명하고, 모두가 Spring AMQP 프레임워크를 원활하게 사용할 수 있도록 솔루션을 제공하겠습니다.

질문 내용

외부 인증 메커니즘을 통해 spring boot 애플리케이션을 Rabbit mq(https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl)에 연결하려고 합니다.

다음 오류가 발생합니다:

으아아아

종속성:

으아아아

rabbitmq 버전: Rabbitmq:3.12.1-management

rabbitmq.conf에는 다음 속성이 포함되어 있습니다.

으아아아

응용 프로그램 속성:

으아아아

sasl 구성을 포함하기 위해 다음 메소드를 선언했습니다.

org.springframework.amqp.amqpioexception: java.io.ioexception: no compatible authentication mechanism found - server offered []
    at org.springframework.amqp.rabbit.support.rabbitexceptiontranslator.convertrabbitaccessexception(rabbitexceptiontranslator.java:70) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.connection.abstractconnectionfactory.createbareconnection(abstractconnectionfactory.java:594) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.connection.cachingconnectionfactory.createconnection(cachingconnectionfactory.java:687) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.connection.connectionfactoryutils.createconnection(connectionfactoryutils.java:257) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.core.rabbittemplate.doexecute(rabbittemplate.java:2225) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.core.rabbittemplate.execute(rabbittemplate.java:2198) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.core.rabbittemplate.execute(rabbittemplate.java:2178) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.core.rabbitadmin.getqueueinfo(rabbitadmin.java:459) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.core.rabbitadmin.getqueueproperties(rabbitadmin.java:443) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.listener.abstractmessagelistenercontainer.attemptdeclarations(abstractmessagelistenercontainer.java:1891) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.listener.abstractmessagelistenercontainer.redeclareelementsifnecessary(abstractmessagelistenercontainer.java:1858) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.listener.simplemessagelistenercontainer$asyncmessageprocessingconsumer.initialize(simplemessagelistenercontainer.java:1384) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.listener.simplemessagelistenercontainer$asyncmessageprocessingconsumer.run(simplemessagelistenercontainer.java:1230) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at java.base/java.lang.thread.run(thread.java:833) ~[na:na]
caused by: java.io.ioexception: no compatible authentication mechanism found - server offered []
    at com.rabbitmq.client.impl.amqconnection.start(amqconnection.java:343) ~[amqp-client-5.17.0.jar:5.17.0]
    at com.rabbitmq.client.connectionfactory.newconnection(connectionfactory.java:1225) ~[amqp-client-5.17.0.jar:5.17.0]
    at com.rabbitmq.client.connectionfactory.newconnection(connectionfactory.java:1173) ~[amqp-client-5.17.0.jar:5.17.0]
    at org.springframework.amqp.rabbit.connection.abstractconnectionfactory.connectaddresses(abstractconnectionfactory.java:632) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.connection.abstractconnectionfactory.connect(abstractconnectionfactory.java:607) ~[spring-rabbit-3.0.5.jar:3.0.5]
    at org.springframework.amqp.rabbit.connection.abstractconnectionfactory.createbareconnection(abstractconnectionfactory.java:557) ~[spring-rabbit-3.0.5.jar:3.0.5]
    ... 12 common frames omitted

해결 방법

rabbitmq 구성 측에 listeners.ssl.default=5672가 무엇인지 잘 모르겠지만 기본 SSL 포트를 재정의하는 것처럼 들립니다.

스프링 부트의 논리는 다음과 같습니다:

으아아아

위치:

으아아아

따라서 포트를 명시적으로 제공하는 것을 고려할 수도 있습니다.

으아아아

맞춤 설정이 필요하지 않을 수도 있습니다 rabbittemplate bean,只需添加 connectionfactorycustomizer 即可将 defaultsaslconfig.external 设置为自动配置的 com.rabbitmq.client.connectionfactory.

사용을 권장하지 않습니다 setautomaticrecoveryenabled(true): https://www.php.cn/link/3c0de3fec9ab8a3df01109251f137119

위 내용은 Spring amqp - 호환 가능한 인증 메커니즘을 찾을 수 없음 - 서버 제공의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제