Ich komme unter die Ausnahme
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Die Anmeldung wurde mithilfe des Authentifizierungsmechanismus PLAIN abgelehnt. Einzelheiten finden Sie in der Broker-Protokolldatei.
Konfiguration: RabbitMQ 3.3.5 unter Windows
In der Konfigurationsdatei in habe %APPDATA%\RabbitMQ\rabbit.config
ich unten Änderungen gemäß https://www.rabbitmq.com/access-control.html vorgenommen
[{rabbit, [{loopback_users, []}]}].
Ich habe auch versucht, einen Benutzer / pwd zu erstellen - test / test scheint nicht zu funktionieren.
Versuchte die Schritte daraus Beitrag.
Weitere Konfigurationsdetails sind wie folgt:
Von Tomcat gehosteter Spring-Anwendungskontext:
<!-- Rabbit MQ configuration Start -->
<!-- Connection Factory -->
<rabbit:connection-factory id="rabbitConnFactory" virtual-host="/" username="guest" password="guest" port="5672"/>
<!-- Spring AMQP Template -->
<rabbit:template id="rabbitTemplate" connection-factory="rabbitConnFactory" routing-key="ecl.down.queue" queue="ecl.down.queue" />
<!-- Spring AMQP Admin -->
<rabbit:admin id="admin" connection-factory="rabbitConnFactory"/>
<rabbit:queue id="ecl.down.queue" name="ecl.down.queue" />
<rabbit:direct-exchange name="ecl.down.exchange">
<rabbit:bindings>
<rabbit:binding key="ecl.down.key" queue="ecl.down.queue"/>
</rabbit:bindings>
</rabbit:direct-exchange>
In meiner Controller-Klasse
@Autowired
RmqMessageSender rmqMessageSender;
//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());
In Absender meiner Nachricht:
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("messageSender")
public class RmqMessageSender {
@Autowired
AmqpTemplate rabbitTemplate;
public void submitToRMQ(String orderId){
try{
rabbitTemplate.convertAndSend("Hello World");
} catch (Exception e){
LOGGER.error(e.getMessage());
}
}
}
Über der Ausnahme Block gibt unten Ausnahme
org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Die Anmeldung wurde mithilfe des Authentifizierungsmechanismus PLAIN abgelehnt. Einzelheiten finden Sie in der Broker-Protokolldatei.
Fehlerprotokoll
=ERROR REPORT==== 7-Nov-2014::18:04:37 ===
closing AMQP connection <0.489.0> (10.1.XX.2XX:52298 -> 10.1.XX.2XX:5672):
{handshake_error,starting,0,
{amqp_error,access_refused,
"PLAIN login refused: user 'guest' can only connect via localhost",
'connection.start_ok'}}
Bitte finden Sie unter dem Eintrag pom.xml
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
Bitte lassen Sie mich wissen, wenn Sie irgendwelche Gedanken / Vorschläge haben
quelle
Antworten:
Ich bin sicher, was Artem Bilan hier erklärt hat, könnte einer der Gründe für diesen Fehler sein:
Die Lösung für mich war jedoch, dass ich mich auf der rabbitMQ-Administrationsseite ( http: // localhost: 15672 / # / users ) mit dem Standardbenutzernamen und -kennwort (guest / guest) angemeldet habe und dann einen neuen Benutzer und für diesen neuen Benutzer I hinzugefügt habe hat die Berechtigung für den Zugriff vom virtuellen Host aus aktiviert und dann den neuen Benutzernamen und das neue Kennwort anstelle des Standardgastes verwendet. Dadurch wurde der Fehler behoben.
quelle
Um die Antwort auf @ cpu-100 zu vervollständigen ,
Falls Sie die Weboberfläche nicht aktivieren / verwenden möchten, können Sie mithilfe der folgenden Befehlszeile neue Anmeldeinformationen erstellen und diese in Ihrem Code verwenden, um eine Verbindung zu RabbitMQ herzustellen.
quelle
Das stimmt seit RabbitMQ 3.3.x. Daher sollten Sie die Clientbibliothek auf dieselbe Version aktualisieren oder Spring AMQP einfach auf die neueste Version aktualisieren (wenn Sie das Abhängigkeitsmanagentsystem verwenden).
Vorherige Version des Clients, die
127.0.0.1
als Standardwert für diehost
Option verwendet wurdeConnectionFactory
.quelle
localhost
ConnectionFactory("localhost")
guest/guest
Konto global! :(Der Fehler
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
kann auftreten, wenn die Anmeldeinformationen, mit denen Ihre Anwendung versucht, eine Verbindung zu RabbitMQ herzustellen, falsch sind oder fehlen.
Dies geschah, als die in der
web.config
Datei meiner ASP.NET-Anwendung gespeicherten RabbitMQ-Anmeldeinformationen""
anstelle des tatsächlichen Kennwortzeichenfolgenwerts den Wert für das Kennwort hatten.quelle
Schreiben Sie dies, um den Gastzugriff aus der Ferne zu ermöglichen
bis hierhin
Starten Sie dann den Windows-Dienst rabbitmq neu (Quelle https://www.rabbitmq.com/access-control.html ).
quelle
Für mich war die Lösung einfach: Der Benutzername unterscheidet zwischen Groß- und Kleinschreibung. Wenn Sie nicht die richtigen Kappen verwenden, führt dies ebenfalls zu dem Fehler.
quelle
Neue Lösung:
Das Knotenmodul kann
:
ein Kennwort nicht richtig verarbeiten. Selbst URL-codiert, wie es normal funktionieren würde, funktioniert es nicht.Verwenden Sie keine typischen Sonderzeichen aus einer URL im Passwort!
Wie einer der folgenden:
: . ? + %
Ursprüngliche, falsche Antwort:
Die Fehlermeldung beschwert sich eindeutig über die Verwendung.
PLAIN
Dies bedeutet nicht, dass die Anmeldeinformationen falsch sind. Sie müssen die verschlüsselte Datenübermittlung (TLS) anstelle von Klartext verwenden.Das Ändern
amqp://
der Verbindungszeichenfolge inamqps://
(beachten Sie dass
) löst dieses Problem.quelle
Fügen Sie einfach das Anmeldekennwort hinzu, um eine Verbindung zu RabbitMq herzustellen
quelle
Wenn Sie die Nummer als Passwort verwenden, sollten Sie möglicherweise versuchen, Ihr Passwort mithilfe einer Zeichenfolge zu ändern.
Ich kann mich mit deltaqin: 000000 auf der Website anmelden, hatte dies aber beim Ausführen des Programms. Ändern Sie dann das Passwort in deltaiqn. und es funktioniert.
quelle
Ich habe genau das gemacht, was @grepit gemacht hat.
Aber ich musste einige Änderungen an meinem Java-Code vornehmen:
Im Producer and Receiver-Projekt habe ich Folgendes geändert:
Auf diese Weise verbinden Sie einen bestimmten Host als den von Ihnen erstellten Benutzer. Für mich geht das!
quelle
Ich hatte dieses Problem aufgrund eines leeren Speicherplatzes am Ende des Kennworts (spring.rabbitmq.password = rabbit) in der Spring-Boot-Anwendung. Die Eigenschaften wurden beim Entfernen des leeren Speicherplatzes behoben. Hoffe, diese Checkliste hilft jemandem, der mit diesem Problem konfrontiert ist.
quelle
Setzen Sie ConnectionFactory oder Connection Hostname auf localhost
quelle