ホームページ  >  記事  >  Spring amqp - 互換性のある認証メカニズムが見つかりません - 提供サーバー

Spring amqp - 互換性のある認証メカニズムが見つかりません - 提供サーバー

PHPz
PHPz転載
2024-02-14 08:50:091198ブラウズ

php エディタ Xinyi は今日、AMQP プロトコルに基づくメッセージング フレームワークである Spring AMQP を紹介します。ただし、Spring AMQP を使用すると、「互換性のある認証メカニズムが見つかりません - サーバーを提供しています」というエラーが発生することがあります。このエラー メッセージはわかりにくく、解決方法がわからない場合があります。次に、このエラーの原因を詳しく説明し、誰もが Spring AMQP フレームワークをスムーズに使用できるようにするための解決策を提供します。

質問内容

外部認証メカニズム (https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl) を介して Spring Boot アプリケーションを Rabbit MQ に接続しようとしています。

次のエラーが表示されます:

リーリー

依存関係:

リーリー

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。